Bonjour,
Je travaille sur un gros projet en ce moment, où il y a toute une hiérarchie de fichiers .h et .cpp, je code sous l'interface Visual Studio 2008 Pro.
Le code compile sans problème jusque là, mais je me heurte à un problème d'inclusions cyclique...
En effet, j'ai organisé les includes comme j'ai pu pour que ça compile (Avec des déclarations implicites de classes, des includes dans les fichiers .cpp ...), mais là le projet devenant assez conséquent je ne parviens plus à utiliser mes classes les unes avec les autres... (En fait, je n'arrive pas à inclure les fichiers).
Les classes se terminent toutes par des ; , et un #pragma once se trouve en en tête de tous les fichiers .h .
J'ai déjà parcouru les messages traitant ce genre de problème, mais sans trouver la solution 'miracle' (Si celle ci existe bien sûr), ni de solution concernant mon plus gros soucis.
Le plus gros problème que j'ai maintenant c'est que j'ai besoin d'utiliser une classe qui hérite dans une qui inclus déjà la classe héritée.
Avec du code c'est plus clair ^^ :
ClasseA.h :
ClasseB.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #pragma once class ClasseA { ... };
ClasseC.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #pragma once #include "ClasseA.h" class ClasseB : public ClasseA { ... };
Comme la classe B hérite de A je ne peut pas faire de déclaration implicite de classe, ici le problème apparaîtra par une erreur sur la classe B : ClasseA inconnue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #pragma once #include "ClasseA.h" #include "ClasseB.h" class ClasseC { ... private: // Réellement la méthode n'est pas inline void methode() { ClasseA* instance = new ClasseB(); } };
Bref, auriez vous une solution pour mon problème ou des astuces pour s'y retrouver dans les inclusions ? (Par exemple n'y a t-il pas moyen de tout inclure dans un seul fichier et d'utiliser celui ci dans tous les headers ?)
Merci d'avance.
Partager