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 :

(c++) Multiply define error (help)


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par défaut (c++) Multiply define error (help)
    salut,

    j'ai un problème de linkage avec la declaration d'une variable globale dans un fichier .h, il me donne ce message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ld (prelink):
    gare.o compressed: Gare: multiply defined
    gare.o compressed: Depot: multiply defined
    gare.o compressed: VecVoie: multiply defined
    gare.o compressed: temp: multiply defined
    gare.o compressed: quai: multiply defined
    ld:
    gare.o compressed: Gare: multiply defined
    gare.o compressed: Depot: multiply defined
    gare.o compressed: VecVoie: multiply defined
    gare.o compressed: temp: multiply defined
    gare.o compressed: quai: multiply defined
    *** Exit 1
    Stop.
    et voivi mon fichier .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
     
     
    #ifndef GARE_H
    #define GARE_H
     
     
     
    /*vecteur de train*/
    Vecteur<VehiculeSurRails>Gare(4);
     
    /*Vecteur de pile de train*/
    Vecteur<stack<VehiculeSurRails> >Depot(4);
     
    /*Vecteur de file de train*/
    Vecteur<list<VehiculeSurRails> > VecVoie(4);
     
    /*pile temporaire*/
    stack<VehiculeSurRails>temp;
     
    int quai[4]={0};
     
    class gare
    {
     
    public : 	
    	void Enreg(void);
    	void Lecture(void);
    };
     
     
    #endif
    et ce fichier h, n'est appelé q'une seule fois dans main.cxx.
    cordialement.

  2. #2
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Bonjour,
    es-tu sûr de ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vecteur<VehiculeSurRails>Gare(4);
    Il nous manque ta classe Vecteur.

    Ensuite, ici, il y a clairement une erreur de compilation:
    C'est plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int quai[4]={0,0,0,0};

  3. #3
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Une variable globale ne se déclare pas comme ça

    http://c.developpez.com/faq/c/?page=...TYPES_globales

    Sinon concernant l'initialisation du tableau avec {0}, c'est tout à fait légal.

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    et ce fichier h, n'est appelé q'une seule fois dans main.cxx
    Il n'est pas invoqué dans gare.cxx (qui doit exister puisque tu as un gare.o) ?
    Si c'est le cas, il y a effectivement des déclarations multiples de variables.
    Un .h n'est pas un endroit où placer des déclarations de variables puisqu'il a vocation à être inclus dans plusieurs fichiers. A la limite, déclarer les variables en extern dans le . h et les déclarer effectivement dans le .cpp

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par défaut
    voila j'ai suivi vos conseille j ai déclaré en externe dans gare.h et je les ais declaré aussi dans gare.cpp , et dans le main.cpp je mes gare.h
    et maintenant l'eereur multiple difine a disparu mais un nouveau a apparut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ld:
    Unresolved:
    gare::Lecture(void)
    gare::Enreg(void)
    *** Exit 1
    Stop.
    c bizar je n'arrive plus a accéder au methide de ma classe gare
    pourtant dans le main je declare bien un objet dut ype de la classe gare
    voila un pti morceau du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main(void)
    {
    	int choix,choixV=0;
    	clr();
    	cout<<"\nCHARGEMENT...";
     
    	gare LectEcrt;
    	LectEcrt.Lecture();
    	....

  6. #6
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as bien implémenté les fonctions gare::Lecture et gare::Enreg ? Tu spécifies bien gare.obj lors de l'édition de lien ?

  7. #7
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Tu as déclaré tes méthodes comment dans la classe ?

    Car si une méthode est private elle n'est pas accessible dans le main.

  8. #8
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par Caine
    Tu as déclaré tes méthodes comment dans la classe ?

    Car si une méthode est private elle n'est pas accessible dans le main.
    Ce sont des erreurs d'édition de lien, pas de compilation.

  9. #9
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Oui, certes, mais il n'est pas non plus très précis sur son problème actuel

    Toujours est-il que le code complet serait un plus.

  10. #10
    Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Par défaut
    je vous remercies baucoup, je contourne le problème pour le moment en faisant appel a gare.cxx dans le main (c pas trop bien mais bon, en attendant jvé continuer a avancé dans le programme).

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu ferais bien mieux de résoudre ton problème avant de passer à la suite !

Discussions similaires

  1. [XL-2010] Erreur 1004 : Application-defined or object-defined error
    Par iriben dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 16/07/2014, 12h21
  2. Réponses: 0
    Dernier message: 16/06/2014, 15h55
  3. Application-defined or object-defined error
    Par Vivi127 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/09/2011, 12h42
  4. [XL-2007] Validation Date Application-defined Error
    Par Bonero dans le forum Excel
    Réponses: 4
    Dernier message: 25/03/2010, 12h29
  5. Réponses: 1
    Dernier message: 20/02/2010, 08h03

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