Daemonight
Messages postés40Date d'inscriptionmardi 24 août 2004StatutMembreDernière intervention29 décembre 2010
-
5 févr. 2009 à 11:28
Daemonight
Messages postés40Date d'inscriptionmardi 24 août 2004StatutMembreDernière intervention29 décembre 2010
-
5 févr. 2009 à 21:49
Bonjour à tous !
j'ai un petit soucis de... disons... méthode. Dans l'intitulé, c'est relativement simple :
J'ai un programme qui utilise plusieurs classes différentes. On va dire trois : la A, la B, et la C.
Chacune de ces classes est "décrite" grâce à deux fichiers : un .h et un .cpp
j'ai donc 6 fichier :
A.h, A.cpp, B.h, B.cpp, C.h, C.cpp
Les cpp contiennent toutes les méthodes des classes correspondantes, et les .h les déclarations et méthodes et propriétés
Voila pour les classes.
Au delà de tout ça, j'ai un fichier header.h, qui contient l'ensemble des ressources nécessaires à mon programme, de type :
les struct communes susceptibles d'être utilisées par mes méthodes de classes ou mon main
les constantes (#define) utilisées aussi par mes méthodes de classe ou mon main
les bibliothèques (iostream, math, time, tout ça tout ça...)
A la base, j'ai bien sûr un main.cpp.
Le problème, c'est les includes. Où est-ce que j'inclue quoi ? Je m'explique :
Chaque X.cpp doit inclure le X.h correspondant, c'est logique.
Chaque X.h doit avoir accès au header, pour les biblio, les constantes, les struct...
Chaque X.h doit avoir accès aux autres X.h : la classe A peut très bien posséder des objets de types B, ou C, pareil pour la B et la C
Enfin le main doit avoir accès à tout...
Le soucis, c'est que je me tape à la compilation des "redifinition of ..." à la pelle, évidemment, parce que main inclue header, mais inclue aussi A qui inclue header... bref, je m'en sort pas. Je ne peux évidemment pas non plus inclure tout les .h dans mon header et n'inclure que mon header dans chacun des .cpp et autres .h, car A.h va inclure header.h, qui inclue A.h, qui inclue header.h ... et là, c'est le compilo qui ne s'en sort pas !
Il y a bien une solution qui consiste à cinder tous les *.h en un seul, mais est-ce l'unique moyen de s'en sortir ? j'aurai voulu au maximum conserver cette "compartimentation".
Si jamais quelqu'un à une lumineuse idée ... Merci !
<----------------------------------------------->
On reconnait un bon developpeur au baobab qu'il a dans la main...
BunoCS
Messages postés15394Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention29 septembre 2023102 5 févr. 2009 à 12:07
Hello,
Une solution est d'encadrer tes headers avec une définition de constante:
#ifndef MONFICHIER_H
#define MONFICHIER_H
....
ici le contenu de ton fichier
...
#endif
On comprend bien qu'il ne sera inclus qu'une seule fois. En effet, lors du "2nd passage", la constante MONFICHIER_H (tu peux mettre ce que tu veux) sera défini et donc le contenu du fichier ne sera pas reparcouru...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Daemonight
Messages postés40Date d'inscriptionmardi 24 août 2004StatutMembreDernière intervention29 décembre 20101 5 févr. 2009 à 21:49
impeccable ! un grand merci, tout se passe pour le mieux
<----------------------------------------------->
On reconnait un bon developpeur au baobab qu'il a dans la main...