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 :

[error] cannot convert parmater


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Points : 105
    Points
    105
    Par défaut [error] cannot convert parmater
    Bonjour, j'obtiens un erreur que je n'arrive pas a résoudre. Voici mon code:
    Process.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #ifndef PROCESS_H
    #define PROCESS_H
     
    #include <vector>
    #include "tnt.h"
     
    struct Element { 	
    public:
    	/// Where did we find the varaible in the file
    	scan_location mlocation;	
    	/// The key
    	sym_variable mVar;
     
     
    	Element(scan_location loc, sym_variable var)
    	{
    		mVar=var;
    		mlocation = loc;
    	}
    };
     
    class CProcess  
    {
    	private:
    		atom m_srcid_atom;
    		std::vector<Element> m_lstLocation;
     
    	public:
    		int OnErrorMessage(TNTMSG *msg);
    		int install_callbacks(void);
    		int OnBegin(TNTMSG *msg);
    		int OnIdentifier(TNTMSG *msg);
    };
     
    #endif

    Process.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    #include "stdafx.h"
    #include "Process.h"
     
     
    int CProcess::OnBegin(TNTMSG *msg)
    {
    	//code
    	return SUCCESS;
    }
     
    int CProcess::OnErrorMessage(TNTMSG *msg)
    {
    //	code
    	return SUCCESS;
    }
     
    int CProcess::OnIdentifier(TNTMSG *msg)
    {
    	//code	return SUCCESS;
    }
     
    int CProcess::install_callbacks(void)
    {
    	callback_add(ACTION_BEGIN, OnBegin, OMITTED); ///erreur obtenu : callback_add' : cannot convert parameter 2 from 'int (struct _tntmsg *)' to 'int (__cdecl *)(struct _tntmsg *)'
     
    	callback_add(ACTION_IDENTIFIER, OnIdentifier, OMITTED);///erreur obtenu : callback_add' : cannot convert parameter 2 from 'int (struct _tntmsg *)' to 'int (__cdecl *)(struct _tntmsg *)'
     
     
    	callback_add(ACTION_ERR_MESSAGE, OnErrorMessage, OMITTED);///erreur obtenu : callback_add' : cannot convert parameter 2 from 'int (struct _tntmsg *)' to 'int (__cdecl *)(struct _tntmsg *)'
     
     
    	return SUCCESS;
    }
     
    int CProcess::process_initialize(void)
    {
     
    	callback_reset();
    	install_callbacks();
     
    	return SUCCESS;
    }
     
    }

    Auriez vous une idée de ce que je ne fais pas de correct?

  2. #2
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    quelle est la signature de ta fonction callback_add ?

    XXiemeciel
    XXiemeciel

  3. #3
    Membre habitué Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Points : 154
    Points
    154
    Par défaut
    je suppose callback_add attend un fonction style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int maFonction(struct _tntmsg *)
    Or tu lui passe une méthode de CProcess, donc sur quelle instance de CProcess doit-elle appeler la fonction ?

    Une solutions peut-être de transofrmer tes méthodes OnBegin et autres en méthodes static. Mais attention aux données de ta classe après.

    Une autre est de passer des instances de CProcess a callback_add qui appellera dessus les methodes OnBegin (ici pas de pb de droits les méthodes sont public, sinon utilisation du mot clé friend).

    il y a peut-être aussi d'autres solution que je ne connait pas.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2003
    Messages : 315
    Points : 105
    Points
    105
    Par défaut
    k, je les ai mis static, mais dans certainne functions, j'utilsait des donnéees membre, donc ça me donnais encore des erreurs... j'ai alors créer une fonction static et de là j'Appelle les autre fonction en déclarant
    CProcess* pProcess
    bref ça fonctionne
    marci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/03/2013, 18h37
  2. Réponses: 3
    Dernier message: 03/10/2012, 11h45
  3. Réponses: 5
    Dernier message: 21/12/2010, 21h47
  4. ERROR: Cannot find dialog template with IDD
    Par emardjean dans le forum MFC
    Réponses: 10
    Dernier message: 24/01/2006, 15h26
  5. cannot convert 'std::string' to 'System::String ^'
    Par broadhead dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 11h37

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