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
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 1
    Points
    1
    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 éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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 éminent sénior
    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
    Points : 13 926
    Points
    13 926
    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
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 1
    Points
    1
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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 éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    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 éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    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
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 3
    Points : 1
    Points
    1
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    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