hallo.
folgendes problem:
es gibt zwei instanzen einer klasse K1: A und B.
diese können über eine memberfunktion set_x(int y) unabhängig voneinander eine speicherstelle a bzw. b schreiben`, die ihnen bei der instanziierung mitgeteilt wird.
jetzt kann es aber beispielsweise so sein, daß b speziell vor oder nach a geschrieben werden muß, wenn bestimmte voraussetzungen erfüllt sind.
ich hätte jetzt eine instanz M einer klasse K2 als „manager“ von A und B erstellt. diese instanz soll o.g. bestimmte voraussetzungen prüfen und das schreiben der speicherstellen in der richtigen reihenfolge übernehmen.
A und B würden sich dazu bei M mittels einer „Register“-funktion anmelden.
je nachdem, ob sie bei M angemeldet sind, schreiben sie selbst a bzw. b (über den aufruf der entsprechenden memberfunktion),
oder M übernimmt das, wobei in diesem fall o.g. bestimmte voraussetzungen geprüft würden.
damit M A und B kennt, bekäme die „Register“-funktion als parameter einen zeiger auf A bzw. B.
die implementierung in M sähe dann z.b. so aus:
if (registered(A) && registered(B))
{
if (*A_ptr.get_i() == 0)
{ /* a vor b schreiben */
*A_ptr.set_x(4);
*B_ptr.set_x(6);
}
else
{`/* B vor A schreiben */
*B_ptr.set_x(6);
*A_ptr.set_x(4);
}
}
das würde wohl funktionieren. aber gibt’s bessere methoden für sowas?
gruß
michael