J'utilise C++ (pas C++ 11). J'ai besoin de faire un pointeur sur une fonction à l'intérieur d'une classe. J'essaie de faire ce qui suit:
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();
Mais il y a une erreur: "La référence à la fonction membre non statique doit être appelée". Que dois-je faire pour créer un pointeur vers un membre de MyClass?
Le problème est que buttonClickedEvent
est une fonction membre et vous avez besoin d'un pointeur sur membre pour l'invoquer.
Essaye ça:
void (MyClass::*func)(int);
func = &MyClass::buttonClickedEvent;
Et puis quand vous l'invoquez, vous avez besoin d'un objet de type MyClass
pour le faire, par exemple this
:
(this->*func)(<argument>);
http://www.codeguru.com/cpp/cpp/article.php/c17401/C-Tutorial-PointertoMember-Function.htm
Vous voudrez peut-être jeter un œil à https://isocpp.org/wiki/faq/pointers-to-members#fnptr-vs-memfnptr-types , en particulier [33.1] Le type de "fonction pointeur-sur-membre" est-il différent de "pointeur-sur-fonction"?