public:
int f(char x, float y);
int g(char x, float y);
int h(char x, float y);
int i(char x, float y);
// ...
void userCode(int memberFunctionNum)
};
//est ce correcte?
void Fred::userCode(int memberFunctionNum)
{
// pré-supose que memberFunctionNum est compris entre 0 et 3 inclus:
callMemberFunction(this, a[memberFunctionNum]) ('x', 3.14);
}
public: int f(char x, float y); int g(char x, float y); int h(char x, float y); int i(char x, float y); // ...
void userCode(int memberFunctionNum)
};
//est ce correcte? void Fred::userCode(int memberFunctionNum) { // pré-supose que memberFunctionNum est compris entre 0 et 3 inclus: callMemberFunction(this, a[memberFunctionNum]) ('x', 3.14);
(this->*(a[ memberFunctionNum ]))( 'x', 3.14 ) ;
Les parenthèses autour de l'accès au tableau ne sont pas strictement nécessaire. L'utilisation de l'opérateur ->* est assez peu fréquente, cependant, et je trouve donc qu'il y a une risque que le programmeur moyen ne connaisse pas la précédance tout de suite.
Avec ton macro, il faudrait *this, à la place de this.
}
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Bruno CAUSSE wrote:
Comment écrire une fonction membre qui appelle un pointeur de
fonction membre
public:
int f(char x, float y);
int g(char x, float y);
int h(char x, float y);
int i(char x, float y);
// ...
void userCode(int memberFunctionNum)
};
//est ce correcte?
void Fred::userCode(int memberFunctionNum)
{
// pré-supose que memberFunctionNum est compris entre 0 et 3 inclus:
callMemberFunction(this, a[memberFunctionNum]) ('x', 3.14);
(this->*(a[ memberFunctionNum ]))( 'x', 3.14 ) ;
Les parenthèses autour de l'accès au tableau ne sont pas
strictement nécessaire. L'utilisation de l'opérateur ->* est
assez peu fréquente, cependant, et je trouve donc qu'il y a une
risque que le programmeur moyen ne connaisse pas la précédance
tout de suite.
Avec ton macro, il faudrait *this, à la place de this.
}
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
public: int f(char x, float y); int g(char x, float y); int h(char x, float y); int i(char x, float y); // ...
void userCode(int memberFunctionNum)
};
//est ce correcte? void Fred::userCode(int memberFunctionNum) { // pré-supose que memberFunctionNum est compris entre 0 et 3 inclus: callMemberFunction(this, a[memberFunctionNum]) ('x', 3.14);
(this->*(a[ memberFunctionNum ]))( 'x', 3.14 ) ;
Les parenthèses autour de l'accès au tableau ne sont pas strictement nécessaire. L'utilisation de l'opérateur ->* est assez peu fréquente, cependant, et je trouve donc qu'il y a une risque que le programmeur moyen ne connaisse pas la précédance tout de suite.
Avec ton macro, il faudrait *this, à la place de this.
}
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34