Bonjour, NE FUYEZ PAS
(je sens que certains auront envie de fuir en voyant la longueur du message mais je vous rassure c'est pas si long et c'est sûrement tout simple pour quelqu'un qui maîtrise un peu mieux le C++ que moi)
J'ai écrit un programme assez massif en C++ avec une dizaine de classes, et j'ai des problèmes avec les dépendances des classes entre elles. En clair:
-J'ai un fichier "mes_includes.h" dans lequel j'ai des inclusions globales et une ou deux constantes, genre comme ça:
- J'ai les classes A,B,C qui sont utilisées dans à peu près toutes les autres classes. En revanche, elles sont totalement indépendantes entre elles sauf la A et la B qui dépendent l'une de l'autre, donc au début de mon A.h j'ai:Code:#include <vector> #include <cmath> #include <string> using namespace std; const int N = 7;
Tandis qu'au début de mes classes B et C j'ai seulement:Code:#include "mes_includes.h" #include "B.h" class B; class A { ...blabla... };
Comme je l'ai dit, ces classes ne dépendent pas des autres classes D à M. De plus, ma classe D est elle aussi totalement indépendante et utilisée par presque toutes les autres classes de E à M). Donc pour faire d'une pierre deux coups et inclure mes A.h, B.h, C.h et D.h d'un seul coup dans mes classes E à M, j'ai mis ceci au début de mon fichier .h de ma classe D:Code:#include "mes_includes.h"
Et ensuite, dans chacune de mes classes restantes (classes E à M), j'ai :Code:#include "A.h" #include "B.h" #include "C.h"
Petit détail encore, mes classes E à M sont indépendantes entre elles sauf la classe E qui a besoin de la classe F (mais pas inversement). Donc dans le .h de ma classe E j'ai mis ça (en plus de #include "D.h") :Code:#include "D.h"
Et finalement j'ai un fichier main.cpp qui a besoin de toutes les classes sans exception, et au début duquel j'ai littéralement inclus les .h de toutes les classes sans exception, de A à M, ainsi que mon "mes_includes.h".Code:#include "F.h" class F; class E { ....blabla };
Et voilà enfin mon problème: à la compilation, j'ai une liste assez énorme de "Undefined symbols", genre ma classe L qui ne trouve pas une méthode de ma classe D, ma classe E qui ne trouve pas une méthode de ma classe F, mon main qui ne trouve pas des méthodes de certaines classes entre E et M... enfin bref c'est un vrai massacre.
Je veux bien que vous ne pouvez pas me dire miraculeusement fait ça et paf ça marchera, mais au niveau de mon raisonnement ci-dessus, est-ce que je fais ça juste, ou pas ?
Enorme merci d'avance.
-----