Les callback et les classes
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
Code:
1 2 3 4 5 6 7
| class MaClass
{
private:
//some members
public:
void Mafonct(int a, int b);
} |
Pour ce que j'en ai compris, il faut commencer par déclarer une variable qui contienne un pointeur de fonction.
En travaillant proprement, on utiliserait le typedef sous la forme de
Code:
1 2
| typedef void(*ptr2int) (int, int);
ptr2int MonPtrFonction; |
(les noms étant surtout choisis pour la compréhension)
Le deuxième travail est de créer une fonction qui appelle la fonction pointée
Code:
1 2 3 4 5
|
void CallBack2int(ptr2int ptr)
{
ptr();
} |
(déjà, là, j'ai un doute sur les arguments à passer à CallBack2int :? :oops: )
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
Code:
1 2 3 4 5 6
|
main
{
//...
CallBack2int(MonPtrFonction);
} |
appelle la méthode Mafonct de ma classe ?
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 ;)