Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich in C Klassen, die Instanzen voneinander teilen?

Wie erstelle ich in C Klassen, die Instanzen voneinander teilen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 08:22:02651Durchsuche

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

Erstellen von Klassen, die in C Instanzen voneinander teilen

Beim Versuch, zwei Klassen in C zu erstellen, wobei jede Klasse ein Objekt von erfordert Wenn Sie die andere Klasse als Mitglied verwenden, kann ein Kompilierungsfehler auftreten. Dies liegt daran, dass die direkte Einbeziehung von Objekten zu einer Endlosschleife bei der Speicherzuweisung führt.

Lösung: Zeiger als Klassenmitglieder verwenden

Um dieses Problem zu umgehen, erstellen Sie Zeiger als Klassenmitglieder anstelle von direkten Objekten. Dieser Ansatz beinhaltet Vorwärtsdeklarationen, um die Existenz von Klassen anzukündigen, ohne deren vollständige Definitionen anzugeben.

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

Fügen Sie in ihren jeweiligen .cpp-Dateien die Header für die anderen Klassen ein:

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

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

Dieser Ansatz unterbricht die zirkuläre Referenzschleife und ermöglicht die Erstellung von Klassen, die Instanzen voneinander durch Zeiger nutzen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich in C Klassen, die Instanzen voneinander teilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn