FNpointer aus übergebener Klasse zuweisen
-
Hallo,
meiner Funktion wird ein Objekt übergeben und aus diesem soll ein
Member des Objektes an einen Funktionszeiger übergeben werden.Class A { [...] int dataA; void foo(); } class B { B(int, void*); int dataRecivedfromA; void (A::*f)(void); // fnpointer } B::B(int data, void* classAincomming) { dataRecivedfromA = ((A*)classAincomming)->dataA; // funktioniert supa f = ((A*)classAincomming)->foo; // error: argument of type 'void (A::)()' does not match 'void (A::*)()' }Was mache ich falsch?
Lg
-
Du mußt schon die Adresse der Funktion anfordern (dazu nimmst du den Adress-Operator &).
-
Bei:
f = &(((A*)classAincomming)->foo);sagt mein Kompiler mir das: error: ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say '&A::foo'
Was ist denn mit "bound", gebundener Memberfunktion gemeint?
Danke!
-
Binarys schrieb:
Bei:
Was ist denn mit "bound", gebundener Memberfunktion gemeint?Das die Memberfunktion bereits mit einem Objekt verbunden ist.
Ungebunden: &ClassName::MemFunName.
Gebunden: object.memFunNameDer Ausdruck object.memFunName (bzw. object->memFunName) ist in Standard-C++ nur für ganz wenig zu gebrauchen. Genaugenommen kann man ihn lediglich zum Aufruf der gebundenen Memberfunktion benutzen. Man kann ihn aber nicht speichern (er besitzt keinen Typ) oder seine Adresse bilden.
Die Lösung hat dir Dein Compiler ja bereits mitgeteilt:
Say '&A::foo'