Bonjour,
J'ai un petit problème assez bizarre. Enfin c'est toujours ce qu'on dit quand on a pas compris comment le résoudre ...
Je vais essayer de me faire comprendre : j'ai reproduit de manière simplifiée mon problème qui ne contient plus que 3 classes. En plus, elles sont quasi vides !! Il est clair que le problème vient de l'inclusion des fichiers.
Premièrement j'ai une classe A. J'ai donc un fichier A.h qui ressemble à ça :
Si j'inclus ici le fichier Z.h c'est parce que j'ai besoin d'utiliser des objets Z dans cette classe. Le fichier d'entête de la classe Z ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #if !defined (A_H) #define A_H #include "Z.h" class A { A(); ~A(); }; #endif
Rien de mal encore ... J'imagine que vous voyez où on va : j'ai inclus le fichier B.h parce que j'ai besoin d'objets B dans la classe Z (non montré ici pour simplifié). La classe B hérite de la classe A :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #if !defined (Z_H) #define Z_H #include "B.h" class Z { Z(); ~Z(); }; #endif
Evidemment, je suis obligé d'inclure le fichier A.h ici. Les fichiers A.cpp, B.cpp et Z.cpp contiennent juste l'inclusion de leur header.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #if !defined(B_H) #define B_H #include "A.h" class B : public A { public: B() {} ~B() {} }; #endif
Donc en fait on tourne un peu en rond dans tout ça. Lors de la compilation j'obtiens le message : expected class-name before '{' token sur la ligne 6 de mon B.h.
Je voudrais juste savoir si c'est possible de faire ceci en C++ (et alors comment ?) ou bien il faut que je revois ma modélisation ?
Merci d'avance.
Partager