Création de classes partageant des instances les unes des autres en C
Lorsque vous essayez de créer deux classes en C, où chaque classe nécessite un objet de l'autre classe en tant que membre, une erreur de compilation peut survenir. En effet, l'inclusion directe d'objets entraîne une boucle infinie dans l'allocation de mémoire.
Solution : utilisez des pointeurs en tant que membres de classe
Pour contourner ce problème, créez des pointeurs en tant que membres de classe au lieu d'objets directs. Cette approche implique des déclarations directes pour annoncer l'existence de classes sans fournir leurs définitions complètes.
In bar.h :
#ifndef BAR_H #define BAR_H class foo; // Forward declare foo class bar { public: foo* getFoo(); protected: foo* f; }; #endif
In foo.h :
#ifndef FOO_H #define FOO_H class bar; // Forward declare bar class foo { public: bar* getBar(); protected: bar* f; }; #endif
Dans leurs fichiers .cpp respectifs, incluez les en-têtes des autres classes :
// foo.cpp #include "foo.h" #include "bar.h" // bar.cpp #include "bar.h" #include "foo.h"
Cette approche brise la boucle de référence circulaire et permet la création de classes qui utilisent des instances les unes des autres via des pointeurs.
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!