Maison > développement back-end > C++ > le corps du texte

Comment créer des classes partageant des instances les unes des autres en C ?

Linda Hamilton
Libérer: 2024-11-11 08:22:02
original
687 Les gens l'ont consulté

How to Create Classes That Share Instances of Each Other in C  ?

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

In foo.h :

#ifndef FOO_H
#define FOO_H

class bar; // Forward declare bar

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

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

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!

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