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 :

Problème lors de la compilation : Erreur "exit status 1 'Pages_Web' has not been declared".


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut Problème lors de la compilation : Erreur "exit status 1 'Pages_Web' has not been declared".
    Bonjour à tous.

    Cela fait un bon moment que je cherches la solution à ce problème mais rien a faire je n'y arrive pas...


    J'ai ce code dans un fichier "Motorisation.h" (qui est une classe que j'ai nommé "Motorisation") :

    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
    #ifndef MOTORISATION
    #define MOTORISATION
     
    #include "Pages_Web.h"
     
     
    class Motorisation
    {
      public :
     
        Motorisation(Pages_Web *s_pPageWeb);
     
     
      private :
     
        Pages_Web *pPageWeb;
    };
     
    #endif
    Mon fichier "Motorisation.cpp" contient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "Motorisation.h"
    #include "Pages_Web.h"
     
    Motorisation::Motorisation(Pages_Web *s_pPageWeb)
    { 
      pPageWeb = s_pPageWeb;
    }

    Mon fichier "Pages_Web.h" est comme ceci :

    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
    #ifndef PAGES_WEB_H
    #define PAGES_WEB_H
     
    #include "Motorisation.h"
     
    class Pages_Web
    {
      public :
     
        Pages_Web();
     
        void set_pMoteur(Motorisation *s_pMoteur);
     
      private :
     
        Motorisation *pMoteur;
     
    };
    #endif
    Et enfin mon fichier "Pages_Web.cpp" contient ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "Pages_Web.h"
     
    Pages_Web::Pages_Web()
    {
     
    }
     
    void set_pMoteur(Motorisation *s_pMoteur)
    {
      pMoteur = s_pMoteur;
    }
    Quand je veux compiler ce code, j'ai cette erreur qui ressort :
    exit status 1
    'Motorisation' has not been declared
    et me surligne la ligne 12
    void set_pMoteur(Motorisation *s_pMoteur);
    du fichier "Pages_Web.h".

    Je ne comprends pas à quoi c'est due ???

    Si quelqu'un peut m'aider ce sera avec grand plaisir.

    Par avance merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut
    Enlève le #include "Pages_Web.h" dans "Motorisation.h" et remplace par class Pages_Web;Cela dit, tu as vraiment besoin de motorisation dans page_web et réciproquement ? Ce genre de problème peut être un signe d'une mauvaise conception.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    Bonjour.

    Merci de ta réponse.

    Oui j'ai effectivement besoin d'inclure Pages_Web dans motorisation et réciproquement car j'ai dans motorisation des éléments qui m'affichent des valeurs dans Pages_Web et Motorisation m'appelle des procédures de Pages_Web quand par exemple le moteur est en butée...

    Je ne connais pas cette syntaxe "class Pages_Web;" c'est pour quels cas ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tu ne peux pas inclure à la fois motorisation.h dans pages_web.h et pages_web.h dans motorisation.h. "class Pages_Web;" permet de dire à motorisation.h que la classe existe mais sans définir son code complet, ce qui est suffisant pour déclarer un pointeur vers pages_web.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    ok je vois.

    Du coups c'est pas un codage "propre" si je comprends bien je dois réfléchir à une autre solution ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il vaut mieux éviter ce genre de dépendances circulaires. Je ne connais pas ton code mais a priori motorisation ne devrait pas dépendre de pages_web. Si une pages_web a besoin d'information sur motorisation ajoute les accesseurs nécessaires dans motorisation.

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

Discussions similaires

  1. erreur : 'QT' has not been declared
    Par kevin254kl dans le forum Débuter
    Réponses: 2
    Dernier message: 12/12/2014, 19h38
  2. Problème sur std::ostream has not been declared
    Par ferroye dans le forum C++
    Réponses: 2
    Dernier message: 02/12/2011, 18h29
  3. Problème compilation 'has not been declared'
    Par Choupinou dans le forum C++
    Réponses: 5
    Dernier message: 28/11/2006, 20h09
  4. Réponses: 7
    Dernier message: 27/09/2005, 21h40

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