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 :
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 int f1(); int (*g)(); // association : g = f1 ; // et ainsi je peux l'appeler dans le code : (*g)();
donc la declaration de mon pointeur sur fonction devient :
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 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 int (MaClasse::*g)();
MAIS MA QUESTION EST LA SUIVANTE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 MaClasse::f1() { // blabla }
COMMENT APPELER UNE FONCTION MEMBRE MAINTENANT ?
ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void MaClasse::Appel_Fonction( void ) { (*g)(); }
ne fonctionne pas non plus. L'erreur est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void MaClasse::Appel_Fonction( void ) { (Ma_Classe::*g)(); }
'*' : 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.
Partager