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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 
int (MaClasse::*g)();
Donc je peux désormais associer des fonctions membres, et les ecrire ensuite :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
MaClasse::f1()
{
   // blabla
}
MAIS MA QUESTION EST LA SUIVANTE :
COMMENT APPELER UNE FONCTION MEMBRE MAINTENANT ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
void MaClasse::Appel_Fonction( void )
{
       (*g)();
}
ne fonctionne pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.