Créer des classes interdépendantes en C via des déclarations directes
En C , comment peut-on établir une relation entre deux classes où chacune contient un objet de l'autre type de classe ?
Objet Direct Incorporation
Malheureusement, l'intégration d'objets de chaque classe directement dans l'autre n'est pas réalisable. Cette référence circulaire crée des besoins d'espace infinis.
Solution de contournement : relation basée sur un pointeur
Au lieu de cela, nous pouvons utiliser des pointeurs pour établir cette relation. Pour briser la dépendance circulaire, nous utilisons des déclarations directes.
Déclarations avant
Dans les en-têtes de classe (par exemple, bar.h et foo.h), nous déclarons le existence de l'autre classe sans la définir :
// bar.h class foo; // Declare that the class foo exists class bar { public: foo* getFoo(); protected: foo* f; };
// foo.h class bar; // Declare that the class bar exists class foo { public: bar* getBar(); protected: bar* f; };
Maintenant, chaque en-tête connaît l'autre classe sans son intégralité définition.
Implémentations de classe
Dans les fichiers .cpp correspondants, nous incluons l'autre en-tête pour accéder à sa définition complète :
// foo.cpp #include "bar.h" // ... Implementations of foo methods
// bar.cpp #include "foo.h" // ... Implementations of bar methods
Utilisation dans main()
Enfin, dans main.cpp, nous peut créer des instances des classes :
#include "foo.h" #include "bar.h" int main() { foo myFoo; bar myBar; }
Cette stratégie nous permet de créer des classes qui s'utilisent les unes les autres sans encourir le problème de référence circulaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!