Maison > développement back-end > C++ > Comment créer deux classes C qui se référencent mutuellement ?

Comment créer deux classes C qui se référencent mutuellement ?

Patricia Arquette
Libérer: 2024-11-10 08:16:02
original
714 Les gens l'ont consulté

How to Create Two C   Classes that Mutually Reference Each Other?

Deux classes se référençant mutuellement

La création de deux classes C contenant chacune directement un objet de l'autre type n'est pas possible en raison de question de référence circulaire. Cependant, une solution de contournement consiste à utiliser des pointeurs pour faire référence les uns aux autres.

Déclarations Forward et utilisation des pointeurs

Pour y parvenir, utilisez des déclarations forward dans les fichiers d'en-tête pour établir le existence de l'autre classe sans la définir :

// bar.h
class foo; // Say foo exists without defining it.

class bar {
public:
  foo* getFoo();
protected:
  foo* f;
};
Copier après la connexion
// foo.h
class bar; // Say bar exists without defining it.

class foo {
public:
  bar* getBar();
protected:
  bar* f;
};
Copier après la connexion

Ensuite, dans les fichiers .cpp respectifs, incluez l'autre en-tête pour définir complètement la classe :

// bar.cpp
#include "foo.h"

foo* bar::getFoo() { return f; }
Copier après la connexion
// foo.cpp
#include "bar.h"

bar* foo::getBar() { return f; }
Copier après la connexion

Cette approche brise la boucle de référence circulaire car les déclarations directes permettent aux classes de reconnaître l'existence de chacune sans inclure leurs en-têtes, évitant ainsi les problèmes d'espace infini pour les objets.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal