Ponteur sur methode ?

Résolu
kaervas Messages postés 51 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 19 avril 2008 - 21 janv. 2008 à 17:13
kaervas Messages postés 51 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 19 avril 2008 - 21 janv. 2008 à 22:53
Bonjour,

J'ai un petit probleme de syntaxe avec les pointeurs sur methode :

    typedef bool (Serveur::*  pfonc)(string& o, map<string, t_list>::iterator);
    map<string, pfonc>        ptrMap;
...
    ptrMap["NEW"] = &Serveur::actionNew;
    ptrMap["SET"] = &Serveur::actionSet;
...
    *(ptrMap[str])(c, _where);

Sur cette derniere ligne VC me pete : error C2064: term does not evaluate to a function taking 2 arguments.
Une idee ?

7 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 janv. 2008 à 20:23
Oui étonnant, la parenthèse pose pb, voici la version correcte:
(this->*(ptrMap[str]))(c, _where); // ptet que les parenthèses autour de ptrMap sont inutiles, tu testes.
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 janv. 2008 à 18:00
Sans une instance d'objet, tu peux pas appeler une méthode...
Serveur mon_serveur(...);

(mon_serveur.(*ptrMap[str]))(c, _where);
0
kaervas Messages postés 51 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 19 avril 2008
21 janv. 2008 à 18:52
Ha oui en effet, l'exemple que j'avais vu etait pour des methodes statics.

Je suis a l'interieur de l'objet ou il y a ces methodes a appeller, en fait,
this->(*ptrMap[c.cmd])(c, _where),

mais il n'a pas l'air d'aimer non plus..
0
kaervas Messages postés 51 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 19 avril 2008
21 janv. 2008 à 18:54
on ne peut pas editer son message ici ?
j'ai corrigé par (this->(*ptrMap[str]))(c, _where);
mais ça ne compile toujours pas ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
21 janv. 2008 à 19:05
Quel est le message d'erreur ?
0
kaervas Messages postés 51 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 19 avril 2008
21 janv. 2008 à 19:10
error C2059: syntax error : '('
0
kaervas Messages postés 51 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 19 avril 2008
21 janv. 2008 à 22:53
Ha oui c'est mieux, c'est bizarre que la ligne d'avant ne passe pas !
Merci !
0
Rejoignez-nous