Utilisation des pointeurs de fonctions membres
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:
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:
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