Ponteur sur methode ? [Résolu]

Signaler
Messages postés
51
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
19 avril 2008
-
Messages postés
51
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
19 avril 2008
-
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

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Sans une instance d'objet, tu peux pas appeler une méthode...
Serveur mon_serveur(...);

(mon_serveur.(*ptrMap[str]))(c, _where);
Messages postés
51
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
19 avril 2008

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..
Messages postés
51
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
19 avril 2008

on ne peut pas editer son message ici ?
j'ai corrigé par (this->(*ptrMap[str]))(c, _where);
mais ça ne compile toujours pas ?
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Quel est le message d'erreur ?
Messages postés
51
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
19 avril 2008

error C2059: syntax error : '('
Messages postés
51
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
19 avril 2008

Ha oui c'est mieux, c'est bizarre que la ligne d'avant ne passe pas !
Merci !