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

Visual C++ Discussion :

Migration VC6 vs VC2008 - error C3854: Assignation à une fonction impossible


Sujet :

Visual C++

  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Par défaut Migration VC6 vs VC2008 - error C3854: Assignation à une fonction impossible
    Bonjour,

    Dans le cadre d'une migration d'un projet VisualC 6.0 vers VisualC 2008, j'ai (entres autres ) l'erreur de compilation suivante.

    d:\developpement\message\vaccdlgdl.cpp(3326) : error C3854: l'expression à gauche de '=' correspond à une fonction. Assignation à une fonction impossible (une fonction n'est pas une l-value)
    Ca pointe sur la ligne rouge ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Pour demander à une CN de nous transmettre son pgm
    void CVAccDlgDL::DemandeProgramme (CString& AdrIP, void* ptrFctAck,
                                                     UINT Offset, UINT Lng)
    {
       [...]
       // On fixe l'adresse de la fonction à exécuter lors du retour de l'ack
       (*ptrMessM2) = (void (*) (const CString&, char*)) ptrFctAck;
      [...]
    }
    On retrouve le même type d'erreur ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      (*ptrMessM30) = (void (*) (UCHAR)) ptrFctAck;
    et la:
    Les définitions sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Pteur sur la fonction à exécuter s/ retour (acquit) d'un M2 (réception d'un M2a)
    void (*ptrMessM2) (const CString& AdrIP, char* Pgm) = NULL;
    // Pteur sur la fonction à exécuter s/ retour (acquit) d'un MESSAGE (réception d'un M30)
    void (*ptrMessM30) (UCHAR Acquit) = NULL;
    Je précise que sous ça marchait visual C++ 6.0
    Je fais une fois de plus appel à vos compétences
    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Par défaut
    Et en étudiant l'exemple suivant ?
    http://msdn.microsoft.com/en-us/libr...sh(VS.80).aspx
    Merci

  3. #3
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef  void (* ptrMessM2) (const CString& AdrIP, char* Pgm);
    
    typedef void (*ptrMessM30) (UCHAR Acquit);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void DemandeProgramme (CString& AdrIP, void* ptrFctAck,
    								   UINT Offset, UINT Lng)
    {
    	//...
    	ptrMessM2 pFct =(ptrMessM2) ptrFctAck;
    	pFct(AdrIP, "bon ça marche"); 
    	//...
    }
    
    void TestFunction(const CString& strAdrIP, char* Pgm)
    {
    	AfxMessageBox(strAdrIP, MB_ICONINFORMATION);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void CTestView::OnDraw(CDC* pDC)
    {
    	CString AdrIP = "192.168.100.1";
    	DemandeProgramme(AdrIP, TestFunction, 0, 0);
    }

  4. #4
    Membre averti
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Par défaut
    Merci Gabrielly, je vais testé ça

Discussions similaires

  1. migration VC6.0 VC2008 problème msxml
    Par Milirf dans le forum Visual C++
    Réponses: 4
    Dernier message: 04/08/2009, 15h06
  2. [Débutant] Assigner une fonction de la barre de menu à un pushbutton
    Par groovyinstinct dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 21/07/2009, 14h05
  3. Réponses: 6
    Dernier message: 19/02/2009, 15h26
  4. Assigner une fonction a un objet creer dynamiquement?
    Par Draleg dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2008, 10h48
  5. Assigné une fonction à une touche du clavier
    Par jay1234 dans le forum C++
    Réponses: 5
    Dernier message: 10/10/2006, 22h30

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