Maison > développement back-end > C++ > Comment créer des classes interdépendantes en C sans récursion infinie ?

Comment créer des classes interdépendantes en C sans récursion infinie ?

Barbara Streisand
Libérer: 2024-11-12 08:38:02
original
664 Les gens l'ont consulté

How can you create interdependent classes in C   without infinite recursion?

Classes interdépendantes en C : Utilisation de déclarations directes

Tenter de créer deux classes contenant des objets du type de l'autre conduit directement à un problème de récursivité infinie. Pour y parvenir, une solution de contournement utilisant des pointeurs et des déclarations forward est nécessaire.

Dans le scénario fourni, la dépendance circulaire entre les classes foo et bar provoque une erreur. Pour résoudre ce problème, des déclarations forward sont utilisées pour annoncer l'existence de chaque classe sans la définir :

// bar.h
#ifndef BAR_H
#define BAR_H

// Declares the existence of foo without defining it
class foo;

class bar {
public:
  foo* getFoo();
protected:
  foo* f;
};
#endif
Copier après la connexion
// foo.h
#ifndef FOO_H
#define FOO_H

// Declares the existence of bar without defining it
class bar;

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

Ces déclarations forward permettent aux en-têtes foo et bar d'être indépendants, évitant ainsi la référence circulaire. Les définitions complètes de chaque classe, y compris les membres pointeurs, sont ensuite fournies dans leurs fichiers .cpp respectifs.

Exemple d'utilisation :

#include "foo.h"
#include "bar.h"

int main(int argc, char **argv) {
  foo myFoo;
  bar myBar;
}
Copier après la connexion

Maintenant, le programme se compile avec succès car les déclarations forward permettent aux classes de se connaître indirectement. Ils peuvent désormais stocker des pointeurs les uns vers les autres, brisant le cycle et permettant la création de classes interdépendantes.

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