J'ai un programme contenant différentes classes....qui s'appel l'une ds l'autres.....
et j'ai cette erreur qui revient tout le temps...: "redefintion of " et "previous defintion of"
Exemple:
Email.h:8: error: redefinition of ‘class Email’
Email.h:9: error: previous definition of ‘class Email’
pers.h:5: error: redefinition of ‘class personne’
pers.h:6: error: previous definition of ‘class personne’
Email.h:8: error: redefinition of ‘class Email’
Email.h:9: error: previous definition of ‘class Email’
pers.h:5: error: redefinition of ‘class personne’
pers.h:6: error: previous definition of ‘class personne’
merci d'avance..... :-)
# Hum
Posté par cho7 (site web personnel) . Évalué à 2.
J'ai le vague souvenir de devoir entourer mes fichiers d'entete (.h) d'un bloc #ifdef - #endif
Genre le fichier personne.h qui dira
#if ndef PERSONNE_H
#define PERSONNE_H 0
//mon code ici
#endif
Comme ca si je fais un include de plusieurs de fichiers qui eux-même font un include de personne.h, alors ce fichier ne sera remonté qu'une fois, et donc pas de conflit. J'suis clair là ? J'espère ne pas dire une grosse connerie, j'pense pas inventer tout ce que je dis quand même :)
[^] # Re: Hum
Posté par tontonflingueur . Évalué à 2.
[^] # Re: Hum
Posté par rody . Évalué à 1.
Est ce que je dois mettre des directives de précompilation?????
merci ps: erreur habituelle.....
->main.cpp:(.text+0x34): référence indéfinie vers « personne::personne(char*, char*, char*)»
main.cpp:(.text+0x4f): référence indéfinie vers « personne::personne(char*, char*, char*)»
main.cpp:(.text+0x66): référence indéfinie vers « CorrespondantEmail::CorrespondantEmail(char*)»
main.cpp:(.text+0x7d): référence indéfinie vers « CorrespondantEmail::CorrespondantEmail(char*)»
main.cpp:(.text+0x91): référence indéfinie vers « CorrespondantPostal::CorrespondantPostal(char*)»
main.cpp:(.text+0xa5): référence indéfinie vers « CorrespondantPostal::CorrespondantPostal(char*)»
main.cpp:(.text+0x114): référence indéfinie vers « message::message()»
main.cpp:(.text+0x126): référence indéfinie vers « Email::Email()»
main.cpp:(.text+0x296): référence indéfinie vers « message::check(char*)»
main.cpp:(.text+0x2c7): référence indéfinie vers « message::check(char*)»
main.cpp:(.text+0x31b): référence indéfinie vers « message::check(char*)»
main.cpp:(.text+0x34c): référence indéfinie vers « message::check(char*)»
main.cpp:(.text+0x40e): référence indéfinie vers « message::AffichMsg() »
main.cpp:(.text+0x49b): référence indéfinie vers « Email::saisie(char*, char*)»
main.cpp:(.text+0x4ad): référence indéfinie vers « Email::toString() »
main.cpp:(.text+0x76f): référence indéfinie vers « Email::~Email()»
main.cpp:(.text+0x78f): référence indéfinie vers « Email::~Email()»
main.cpp:(.text+0x7a9): référence indéfinie vers « message::~message()»
main.cpp:(.text+0x7c9): référence indéfinie vers « message::~message()»
main.cpp:(.text+0x8bc): référence indéfinie vers « personne::~personne()»
main.cpp:(.text+0x8d9): référence indéfinie vers « personne::~personne()»
main.cpp:(.text+0x8f0): référence indéfinie vers « personne::~personne()»
main.cpp:(.text+0x919): référence indéfinie vers « personne::~personne()»
[^] # Re: Hum
Posté par tontonflingueur . Évalué à 1.
[^] # Re: Hum
Posté par xavier . Évalué à 2.
Elle permet uniquement au compilateur de comprendre qu'une classe Email qui sera completement declarée ulterieurement est utilisée (indirectement, ici via des pointeurs) dans la declaration de la classe personne (personne.h).
Pour que cela fonctionne il lui faudra egalement :
1) ne PAS inclure la declaration complete de la classe Email (Email.h) dans/avant la declaration complete de la classe personne (personne.h).
2) inclure la declaration complete de la classe Email (Email.h) _AVANT_ les definitions de la classe personne (classiquement: dans/au debut de personne.c).
le 2 n'etant une obligation que si les definitions de la classe personne manipulent autre chose que des pointeurs sur la classe Email (accede a des membres quel qu'ils soient, en crée des instances, etc).
bref il faut partir de l'aprioris que le compilateur est un idiot a qui il faut tout expliquer plus ou moins completement suivant le contexte :)
[^] # Re: Hum
Posté par rody . Évalué à -1.
ps: je pense que ça dois être ca oui....
[^] # Re: Hum
Posté par rody . Évalué à 1.
merci
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.