Bonjour,
J'ai un petit soucis de compilation avec une partie d'un programme.
J'ai trois classes principales, une classe A, B et C.
La classe A contient comme une propriété de type pointeur sur une méthode de classe B.
La classe B contient diverse méthodes pas utiles pour expliquer ce problème. ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class A { public : void (B::* action) (void); };
Et enfin j'ai la classe C qui hérite de la classe B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class B { ... };
Maintenant dans ma classe principale j'aimerai faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class C : public B { public : void actionC(void); };
Malheureusement ça ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 A * a = new A(); a->action = &C::actionC;
Pour info voici le message d'erreur du compilateur :
Donc voici ma question : comment faire pour affecter à une variable de type pointeur sur méthode de classe B, une valeur de type pointeur sur méthode de classe C, en sachant que C hérite de B ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 error: cannot convert `void (C::*)()' to `void (B::*)()' in assignment
Si vous avez besoin d'information complémentaire, n'hésitez pas.
(j'ai volontairement éviter de mettre le code qui me semble servir à rien, mais si vous pensez que ça vient d'ailleur, je le met en entier)
Merci d'avance.
Partager