Verwijzing naar niet-statische lidfunctie moet worden aangeroepen

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 buttonClickedEventeen 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 MyClassnodig 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”?

Other episodes