Une possibilité consiste à factoriser une partie des fichiers a.h
et b.h
dans un troisième fichier dire c.h
, et l'inclure à la fois a.h
et b.h
. De cette façon, les deux derniers n'auront plus besoin de se comprendre mutuellement.
Une autre possibilité consiste à fusionner les fichiers d'en-tête séparés en un seul.
Une troisième possibilité est la situation où deux classes doivent légitimement se référer les unes aux autres. Dans ce cas, vous devez utiliser les pointeurs. De plus, vous pouvez renvoyer déclarer la classe au lieu d'inclure son fichier d'en-tête. [Ils ont également mentionné par jdv] Par exemple,
// file a.h
struct B;
struct A { B * b_ };
// file b.h
struct A;
struct B { A * a_; };
Cependant, sans connaître votre situation particulière, il est difficile de fournir des suggestions spécifiques.
Nombreux doublons: http: // stackoverflow.com/questions/1748624/circulaire-dépendances-de-déclarations, et http://stackoverflow.com/questions/1655096/c-class-its-base-class-and-circular-include-includes pour n'en nommer que quelques-uns –