Bonjour à tous,

J'inaugure ici mon premier post, alors n'hésitez pas à me signaler toute erreur d'utilisation ...

J'ai donc un souci avec des pointeurs de fonctions membres en C++.
Je pense que c'est plus un problème syntaxique mais je vous laisse juger :

J'ai bien sûr simplifier le code
Pour info (si c'est utile) je suis sous Eclipse.


Voici mon .h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
class maClasse;
 
typedef unsigned char (maClasse::*AffMemberFn)();
#define CallMemberFn(object, ptrToMember) ((object).*(ptrToMember))
 
class maClasse{
   private:
   [...]
   void Gestion0();
   unsigned char Gestion1();
   unsigned char Gestion2();
   unsigned char Gestion3();
   void MaFonction(int i, AffMemberFn pfm1, AffMemberFn pfm2, AffMemberFn pfm3);
   public:
   [...]
}
et mon .c :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
void maClasse::Gestion0(){
   AffMemberFn mpfm1 = NULL;
   AffMemberFn mpfm2 = NULL;
   AffMemberFn mpfm3 = NULL;
   short param1 = 0;
 
   if(GSM::ServerOK){
      if(this->aboOk){
         mpfm1 = &maClasse::Gestion1;
         mpfm2 = NULL;
         mpfm3 = &maClasse::Gestion3;
         param1 = 1;
      }
      else{
         mpfm1 = &maClasse::Gestion1;
         mpfm2 = &maClasse::Gestion2;
         mpfm3 = NULL;
         param1 = 2;
      }
   }
   else{
      mpfm1 = &maClasse::Gestion1;
      mpfm2 = NULL;
      mpfm3 = NULL;
      param1 = 3;
   }
   this->maFonction(param1, mpfm1, mpfm2, mpfm3);
}
 
unsigned char maClasse::Gestion1(){
}
 
unsigned char maClasse::Gestion2(){
}
 
unsigned char maClasse::Gestion3(){
}
 
void maClasse::MaFonction(int i, AffMemberFn pfm1, AffMemberFn pfm2, AffMemberFn pfm3){
 
   unsigned char result = 0;
   int a = Config::instance->Get(i);
 
   switch(a){
      case 0:{
         result = pfm1();
      }
      break;
      case 1 :{
         result = pfm2();
      }
      break;
      case 2 :{
         result = pfm3();
      }
      break;
      default :
      break;
   }
 
   this->AffichePage(result);
}
L'erreur que j'ai se situe dans "MaFonction" au niveau de l'appel des pointeurs (result = pfm1()) : must use '.*' or '->*' to call pointer-to-member function in pfm1(...)

Voilà
J'espère que c'est pas trop incompréhensible.

Merci