IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Pointeur sur méthode + erreur C2064


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Pointeur sur méthode + erreur C2064
    Bonjour,

    J'ai un problème concernant un pointeur sur méthode que je récupère à l'aide d'un vecteur de pair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector<std::pair<ZenZiAPI::IModule::p_callback,ZenZiAPI::hookPosition>>	_VModules;
    Mon pointeur est de la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef bool (ZenZiAPI::IModule::*p_callback)(ITools&);
    Il à été définis dans la pair de a manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	this->_LPHook = std::make_pair(static_cast<ZenZiAPI::IModule::p_callback>(&ModulePHP::GetPHP), ZenZiAPI::MIDDLE);
    Il pointe sur cette méthode dans une DLL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool	ModulePHP::GetPHP(ZenZiAPI::ITools &_EOTools)
    Lorsque je veux l'exploiter dans la classe appelant ma DLL et récupérant ce pointeur voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tools	*T = new Tools();
    ZenZiAPI::IModule::p_callback test = this->_VModules.begin()->first;
    			/* PROBLEME ICI */
    (test)((*static_cast<ZenZiAPI::ITools*>(T)));
    voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error	1	error C2064: term does not evaluate to a function taking 1 arguments
    Sauriez vous d'où vient l'erreur ?

    Merci par avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    p_callback pointe vers une fonction membre de IModule.

    Par conséquent, il faut que tu l'appliques à un objet IModule.

    C'est comme si tu faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Fonction()
    //Au lieu de :
    obj.Fonction()
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pointeurs sur méthode
    Par didierBB dans le forum C++
    Réponses: 10
    Dernier message: 06/10/2012, 18h08
  2. Pointeur sur méthode + héritage
    Par Bleastou dans le forum C++
    Réponses: 20
    Dernier message: 22/09/2008, 14h54
  3. Pointeur sur méthode membre
    Par FunkyTech dans le forum C++
    Réponses: 10
    Dernier message: 13/05/2008, 10h02
  4. Pointeur de fonctions sur méthode
    Par Glosialabolas dans le forum C++
    Réponses: 9
    Dernier message: 04/12/2005, 14h55
  5. erreur C2664 : pointeur sur fonction
    Par hiko-seijuro dans le forum C++
    Réponses: 2
    Dernier message: 26/07/2005, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo