A noter que la forward declaration de la class Email dans personne.h ne resoudra pas le probleme a elle seule.
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 xavier . En réponse au message redefinition of ..... É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 :)