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!