Maison  >  Article  >  développement back-end  >  Comment créer des classes partageant des instances les unes des autres en C ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 08:22:02650parcourir

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

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!

Déclaration:
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