Ik gebruik C++ (niet C++11). Ik moet een verwijzing maken naar een functie in een klasse. Ik probeer het volgende te doen:
void MyClass::buttonClickedEvent( int buttonId ) {
// I need to have an access to all members of MyClass's class
}
void MyClass::setEvent() {
void ( *func ) ( int );
func = buttonClickedEvent; // <-- Reference to non static member function must be called
}
setEvent();
Maar er is een fout: “Referentie naar niet-statische lidfunctie moet worden aangeroepen”. Wat moet ik doen om een verwijzing naar een lid van MyClass te maken?
Antwoord 1, autoriteit 100%
Het probleem is dat buttonClickedEvent
een ledenfunctie is en dat je een verwijzing naar een lid nodig hebt om deze aan te roepen.
Probeer dit:
void (MyClass::*func)(int);
func = &MyClass::buttonClickedEvent;
En als je het dan aanroept, heb je een object van het type MyClass
nodig om dit te doen, bijvoorbeeld this
:
(this->*func)(<argument>);
http://www.codeguru.com/cpp /cpp/article.php/c17401/C-Tutorial-PointertoMember-Function.htm
Antwoord 2, autoriteit 30%
Misschien wil je een kijkje nemen op https: //isocpp.org/wiki/faq/pointers-to-members#fnptr-vs-memfnptr-types, vooral [33.1] Is het type “pointer-to-member-functie” anders dan “aanwijzer-naar-functie”?