Maison > développement back-end > C++ > Comment créer des classes interdépendantes en C à l'aide de déclarations directes ?

Comment créer des classes interdépendantes en C à l'aide de déclarations directes ?

Linda Hamilton
Libérer: 2024-11-23 20:44:15
original
969 Les gens l'ont consulté

How to Create Interdependent Classes in C   Using Forward Declarations?

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;
};
Copier après la connexion
// foo.h
class bar; // Declare that the class bar exists

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

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
Copier après la connexion
// bar.cpp
#include "foo.h"

// ... Implementations of bar methods
Copier après la connexion

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;
}
Copier après la connexion

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!

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