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 :

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
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 (Z_H)
  #define Z_H
 
#include "B.h"
 
class Z  {
    Z();
    ~Z();
};
 
#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
12
#if !defined(B_H)
   #define B_H
 
 #include "A.h"
 
 class B : public A {
 public:  
     B() {}
     ~B() {}
 };
 
 #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.

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.