Salut,
J'ai (peut etre très mal) cherché tant sur le net que sur le forum, mais je j'ai pas trouvé réellement la réponse que je cherche...Je me permet donc de vous la poser ici:
Je cherche à comprendre le mécanisme d'implémentation du callback d'une méthode de classe.
Par exemple, une classe toute simple du genre de
Pour ce que j'en ai compris, il faut commencer par déclarer une variable qui contienne un pointeur de fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class MaClass { private: //some members public: void Mafonct(int a, int b); }
En travaillant proprement, on utiliserait le typedef sous la forme de
(les noms étant surtout choisis pour la compréhension)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 typedef void(*ptr2int) (int, int); ptr2int MonPtrFonction;
Le deuxième travail est de créer une fonction qui appelle la fonction pointée
(déjà, là, j'ai un doute sur les arguments à passer à CallBack2int )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void CallBack2int(ptr2int ptr) { ptr(); }
Voilà, en gros, ce que j'ai compris (si j'ai fait une erreur quelque part, merci de me le signaler )
Les questions qui tuent: En allant du plus simple au plus compliqué:
Q1- Comment implémenter les choses pour qu'un appel du genre de
appelle la méthode Mafonct de ma classe ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 main { //... CallBack2int(MonPtrFonction); }
Q2- Comment implémenter CallBack2int et MonPtrFonction pour qu'ils soient respectivement méthode et membre de MaClasse (qu'un appel à CallBack2int se fasse sous la forme de MonObjet->CallBack2int() ou MonObjet.CallBack2int () selon les circonstance)?
Y a-t-il des points auxquels il faut etre attentif? (membres et/ou méthodes statiques, par exemple)
Q3- CallBack2int peut il etre méthode virtuelle pure dans un but polymorphique?
Je vous remercie d'avance
Partager