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 :

erreur C2664 : pointeur sur fonction


Sujet :

C++

  1. #1
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut erreur C2664 : pointeur sur fonction
    bonjour

    voila j'ai donc un pb avec les pointeurs sur fonction.
    J'ai commencé par définir le type suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef void (*fcnWrite)(std::string strMessage,int nType);
    puis j'ai ensuite créé la classe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class __declspec(dllexport) CLogger
        {
        private:
            fcnWrite    m_pWrite;
     
       .....................................
     
        // Sets
        public:
            void SetWriteFunction(fcnWrite Write);
     
        };
    la méthode SetWriteFunction affecte tout bêtement la fonction passé en paramètre à la variable membre "m_pWrite"


    voici comment j'utilise la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CTestUtilsDlg::OnOk()
    {
        CLogger log;
        log.SetWriteFunction(Write);
    }
    avec pour méthode Write suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CTestUtilsDlg::Write(std::string strMessage, int nType)
    {
        CString test = strMessage.c_str() ;
        m_edittest.SetWindowText(test);
    }

    Enfin voici l'erreur qui est générée :
    C:\sebastien\project\testUtils\testUtilsDlg.cpp(182) : error C2664: 'SetWriteFunction' : cannot convert parameter 1 from 'void (class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int)' to 'void (__cdecl *)(class
    std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int)'
    None of the functions with this name in scope match the target type
    est ce quelqu'un saurait d'où cela vient ? car moi je suis complètement perdu la :s
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Les pointeurs sur fonctions membres et les pointeurs sur fonctions libres (ou membres statiques) n'ont pas le même type et sont incompatibles. Voir la FAQ C++ pour plus de détails (section 5).

  3. #3
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    ah oki*
    dsl d'avoir déranger :s
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/07/2011, 13h04
  2. Réponses: 5
    Dernier message: 12/01/2005, 20h58
  3. pointeurs sur fonction en C++
    Par cemoi dans le forum C++
    Réponses: 7
    Dernier message: 29/11/2004, 13h19
  4. [langage] Pointeur sur fonction
    Par Fanch.g dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2004, 10h43
  5. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 19h37

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