I einen Zeiger auf ein Objekt ‚Eventhandler‘ haben, die eine Elementfunktion ‚HandleButtonEvents‘ hat:Geben eine Objekte Elementfunktion als Argument (Funktionszeiger)
I es so nennen:
eventHandler->HandleButtonEvents();
jetzt will ich einen Zeiger auf die Mitglieds Funktion übergeben ‚HandleButtonEvents()‘ der Klasse ‚Eventhandler‘ als Argument für einen anderen das Objekt ‚obj‘ wie in diesem Stackoverflow example:
ClassXY obj = ClassXY(eventHandler->HandleButtonEvents);
Der Konstruktor wird wie folgt erklärt:
ClassXY(void(*f)(void));
Der Compiler sagt mir:
Fehler: ungültige Verwendung von nicht-statische Member-Funktion
Was mache ich falsch?
Zeiger zu nicht statischen Elementfunktionen sind nicht identisch mit einem Zeiger auf eine Nichtmitgliedsfunktion. Ich empfehle Ihnen, in ['std :: function'] (http://en.cppreference.com/w/cpp/utility/functional/function) und [' std :: bind'] zu schauen (http: // en. cppreference.com/w/cpp/utility/functional/bind) statt. –
Es sollte 'void (DecltypeEventHandler :: * f) (void)' sein. – skypjack
@skypjack: kann das nicht verwenden, weil ich den Typ in dieser Klasse nicht einschließen kann (include-Schleife). Deshalb versuche ich den Funktionszeiger zu verwenden ... –