Classe et fichier.h

Résolu
Signaler
Messages postés
40
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
29 décembre 2010
-
Messages postés
40
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
29 décembre 2010
-
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...

2 réponses

Messages postés
15187
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
26 novembre 2021
100
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...
Messages postés
40
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
29 décembre 2010
1
impeccable ! un grand merci, tout se passe pour le mieux
<----------------------------------------------->
On reconnait un bon developpeur au baobab qu'il a dans la main...