Zeiger auf Methoden eines Objekts. Wie geht das?
-
Hallo zusammen,
ich versuche, eine Funktion, die in einem Objekt existiert in einen Zeiger zu speicher und dann vor außerhalb des Objektes aufzurufen. Wie mach ich das?
Ich weiß, wie ich normale Zeiger auf Funktionen erzeuge und verwende, aber mit Objekten klappts nicht.Danke für die Hilfe,
viele Grüße,
Matthias
-
fehlersucher schrieb:
Hallo zusammen,
ich versuche, eine Funktion, die in einem Objekt existiert in einen Zeiger zu speicher und dann vor außerhalb des Objektes aufzurufen. Wie mach ich das?
Ich weiß, wie ich normale Zeiger auf Funktionen erzeuge und verwende, aber mit Objekten klappts nicht.Danke für die Hilfe,
viele Grüße,
Matthias
Im Zusammenhang mit Klassen ist die Handhabung ein wenig anders:
Beispiel Zeiger auf ein Objekt einer Klasse foo:
struct foo { string obj; }; int main() { string foo::*element_ptr; // Deklaration foo bar; // objekt erzeugen, auf dessen Element obj element_ptr später zeigen soll element_ptr = &bar::obj; // Zuweisung bar.*element_ptr; // Dereferenzierung. ... }Beispiel: Zeiger auf eine Methode von foo
struct foo { void method(); }; int main() { void (foo::*method_ptr)(); // Deklaration foo bar; // objekt erzeugen, auf dessen Methode method() method_ptr später zeigen soll method_ptr = &bar::method; // Zuweisung bar.*method_ptr; // Dereferenzierung. ... }Gruß Caipi
-
non-static Funktionen? Dann brauchst du natürlich ein Objekt um sie aufrufen zu können.
ReturnType (ClassType::*the_method_pointer)( /* ParamTypes */ ) = &ClassType::someMethod; ClassType ct; (ct.*the_method_pointer)( /* params? */ ); ClassType* pct = &ct; (pct->*the_method_pointer)( /* params? */ ); // meist uebersichtlicher: typedef ReturnType (ClassType::*MethodPointerType)( /* ParamTypes */ ); MethodPointerType the_method_pointer = &ClassType::someMethod; // und die Boardsuche duerfte auch _einiges_ zu Tage foerdern...
-
Hey, vielen Dank für den Crashkurs - jetzt scheints zu gehen

