Methode als Funktionszeiger
-
Wie kann ich eine Methode einer Instanz als Funktionzeiger nutzen?
class foobar { public: void hallo(void); }; int main() { foobar foo; void (*func)(void) = foo.hallo; }
-
-
#include <cstdlib> #include <iostream> using namespace std; class foobar { public: void hallo() { cout << "Funkion hallo()\n"; } }; int main() { /** * ptr ist ein Zeiger auf eine Methode der Klasse foobar. Dieser * wird mit der Methode foobar::hallo initialisiert. Zu diesem * Zeitpunkt sind noch keine Instanzen der Klasse foobar notwendig */ void (foobar::*ptr)(void); ptr = &foobar::hallo; /** * Klasse foobar instanzieren. foo ist eine Instanz der Klasse * foobar, p_foo ein Zeiger auf dieses Objekt. Mithilfe des .* * bzw. des ->* Operators und dem Oben erzeugten Zeiger lässt sich * die Methode hallo der Klasse foobar aufrufen */ foobar foo; (foo.*ptr)(); foobar* p_foo = &foo; (p_foo->*ptr)(); /** * Ausgabe: * Funkion hallo() * Funkion hallo() */ }