Pointeur sur des fonctions membres d'une classe
Bonjour a tous, j'ai une question sur les pointeurs de fonctions :
Je déclare une fonction de la sorte :
int (*g)() ;
Si je fais ca en dehors de toute classe, je déclare mon prototype de fonction au dessus, et ca fonctionne, je peux utiliser ma fonction :
Code:
1 2 3 4 5 6 7 8 9
|
int f1();
int (*g)();
// association :
g = f1 ;
// et ainsi je peux l'appeler dans le code :
(*g)(); |
Mais je désire maintenant mettre tout ca dans une classe et appeler des fonctions d'une classe :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
// .h :
class MaClasse
{
private :
int f1() ;
}; |
donc la declaration de mon pointeur sur fonction devient :
Code:
1 2 3
|
int (MaClasse::*g)(); |
Donc je peux désormais associer des fonctions membres, et les ecrire ensuite :
Code:
1 2 3 4 5
|
MaClasse::f1()
{
// blabla
} |
MAIS MA QUESTION EST LA SUIVANTE :
COMMENT APPELER UNE FONCTION MEMBRE MAINTENANT ?
Code:
1 2 3 4 5
|
void MaClasse::Appel_Fonction( void )
{
(*g)();
} |
ne fonctionne pas.
Code:
1 2 3 4 5
|
void MaClasse::Appel_Fonction( void )
{
(Ma_Classe::*g)();
} |
ne fonctionne pas non plus. L'erreur est :
'*' : illegal on operands of type 'void (__thiscall MaClasse::*)( void )
pour le premier cas et :
syntax error : '<tag>::*'
pour le second cas.
Voila, merci pour votre aide, a bientot.