Heim > Backend-Entwicklung > C++ > Hauptteil

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

Linda Hamilton
Freigeben: 2024-11-11 08:22:02
Original
686 Leute haben es durchsucht

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
Nach dem Login kopieren

In foo.h:

#ifndef FOO_H
#define FOO_H

class bar; // Forward declare bar

class foo {
public:
  bar* getBar();
protected:
  bar* f;
};
#endif
Nach dem Login kopieren

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"
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage