000
21.08.2003, 09:57 Uhr
~Oliver
Gast
|
Hallo Forum,
ich habe zwei Klassen A und B, wobei Klasse A Klasse B kennt, aber nicht umgekehrt. Nun möchte ich einen Callback von Klasse B zu Klasse A machen.
Einen Funktionspointer und Methoden zum Setzen der Callback-Funktion habe ich bereits:
Klasse A, Header:
C++: |
extern B MyB; // wird in der ausführenden Unit definiert
class A { public: void AufrufSetzeCallback(); // Callback-Funktion wird auf MyIntegerFunktion gesetzt int MyIntegerFunktion(int InInt); // Hierauf soll die CB-Funktion verweisen
};
|
Klasse A, Quelltext:
C++: |
int A::MyIntegerFunktion(int InInt) { return (InInt*InInt); }
void A::AufrufSetzeCallback() { MyB.SetzeCallbackFunktion(&A::MyIntegerFunktion); }
|
Klasse B, Header:
C++: |
class A;
class B { public: int (A::*CallbackFunktion)(int); void SetzeCallbackFunktion(int (A::*InFunktion)(int)); // CB-Funktion wird auf InFunktion gesetzt };
|
Klasse B, Quelltext:
C++: |
void B::SetzeCallbackFunktion(int (A::*InFunktion)(int)) { this->CallbackFunktion = InFunktion; }
|
Entscheidend ist, dass der Funktionspointer in Klasse B als A::*CallbackFunktion deklariert ist (und wohl auch so deklariert werden muss). Wenn ich aber jetzt den Callback vollziehen und in Klasse B den Funktionspointer aufrufen will, wie muss ich den denn dann aufrufen? Schreibe ich "MyB.CallbackFunktion(IntegerZahl)" erhalte ich die Meldung, das sei keine Funktion. Vielen Dank für Antworten.
CPP tag added by virtual Dieser Post wurde am 21.08.2003 um 10:29 Uhr von virtual editiert. |