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 de compilation


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut Erreur de compilation
    1)j'ai declarer une fonction dans la class (dans SimOPCDocument.h)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class SimOPCDocument : public SpSvaOpcDocumentBase
    {
    public:
    	...
    	void SimOPCDocument::ClientConnect();
    }
    2)j'ai ecrit la fonction (dans SimOPCDocument.cpp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void SimOPCDocument::ClientConnect()
    {
    	CString	mess;
    	mess.Format("Connexion d'un client OPC");
    	SimOPCLogView::PostEvent(CTime::GetCurrentTime(), mess);
    }
    3)j'ai appele la fonction (dans OPCServer.cpp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void OPCServer::FinalConstruct()
    {
    	SimOPCDocument::ClientConnect();
    }

    Voici les erreurs de compilation :
    OPCServer.cpp(151) : error C2653: 'SimOPCDocument' : is not a class or namespace name
    OPCServer.cpp(151) : error C2065: 'ClientConnect' : undeclared identifier

    Qu'est ce qui ne va pas dans ce code?

    est ce que je pourrez declarer la fonction dans SpSvaOpcDocumentBase car :
    class SimOPCDocument : public SpSvaOpcDocumentBase

    merci

  2. #2
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Ce qui ne va pas c'est que 'SimOPCDocument' : is not a class"
    Il doit y avoir une erreur de syntaxe quelque part (une accolade mal fermée, un point virgule manquant)
    Sans plus de renseignement je parierais sur le point virgule de fin de classe (class {};), on a tendance à l'oublier celui là.

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Pour utiliser les méthodes d'une classe, il te faut créer un objet de la classe et appeler la méthode par l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MaClasse{
    void foo();
    };
     
    void bar(){
        MaClasse objet;
        objet.foo();
    }
    Ou alors déclarer la fonction en static, afin que ce soit une méthode de classe, dans ce cas la méthode peut-être invoquée au choix à partir d'un objet ou à partir de la classe ; par contre, comme elle n'est pas liée à un objet précis, tu ne peux utiliser aucune variable définie par ta classe, sauf celle qui sont égaglement déclarées static (et qui sont partagées par l'ensemble des objets de la classe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class MaClasse{
        static void foo();
    };
     
    void bar(){
        MaClasse::foo();
    }
    Tu peux trouver plus de détail dans la faq.

    Par contre, la question à se poser, c'est de savoir si cette fonction ClientConnect est un peu comme une fonction globale, localisée dans une classe, éventuellement pour conserver des informations dans des variables de classe (=> static), ou si elle doit être appliquée à un objet précis (=> pas static, et voir quel est le sens de cet objet, à quel moment il est créé, etc...).

  4. #4
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    l'erreur vien de l'appel de la fonction dans OPCServer.cpp
    si j'appel la fonction dans SimOPCDocument tout va bien

    est ce qu'il y a des interditions d'appel de fonction?

    merci

  5. #5
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    C'est un problème d'inclusion.

    Si tu utilises la classe SimOPCDocument dans OPCServer.cpp, il faut que tu la déclares, en incluant le fichier d'en-tête simopcdocument.h

  6. #6
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Points : 103
    Points
    103
    Par défaut
    merci white_tentacle
    en effet c'est un probleme d'inclusion

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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