Bonjour.

J'ai un petit probleme de classes dependants les unes des autres.
C'est generique, ca m'est arrive des tonnes de fois. Et a d'autres personnes. Du coup je vais prendre un cas general : c'est surement arrive a quelqu'un ici qui a deja reussi a passer ce cap. Donc je tente ma chance.

Jusque la, c'est une situation que j'ai rencontre tres souvent, et si je sais comment m'en occuper, il y a aussi des cas tres particuliers (ca m'arrive toujours au moins une fois par projet, et je finis toujours par laisser tomber et remplacer le tout par un truc degueulasse : generalement, regrouper les classes dans le meme header fonctionne...).

Voici comment je declare mes headers :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#ifndef MACLASSE_HPP
# define MACLASSE_HPP
# include "autreClasse.hpp"
 
  class			MaClasse
  {
    private:
      autreClasse* var;
  };
 
#else
 
class MaClasse;
 
#endif
L'autre classe est naturellement declaree de la meme facon.
C'est comme ca que TOUT mes headers sont rediges, sans exception.

Quand il n'y a pas trop d'inclusions imbriques, ca passe.
Pourtant, quand j'ai besoin de rajouter d'autres inclusions imbriques, parfois, je tombe sur cette erreur mystique : le compilateur m'annonce dans autreClasse.hpp que MaClasse n'a pas ete declare.
Il me lance une jolie insulte du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error C2079: 'autreClasse::var' uses undefined class 'MaClasse'
J'ai beau aussi faire ma declaration de cette facon la :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
class MaClass;
class autreClasse
{
  MaClass* var;
};
Le probleme reste le meme.

Aidez-nous !