Heim > Backend-Entwicklung > C++ > Wie erstelle ich voneinander abhängige Klassen in C mithilfe von Forward-Deklarationen?

Wie erstelle ich voneinander abhängige Klassen in C mithilfe von Forward-Deklarationen?

Linda Hamilton
Freigeben: 2024-11-23 20:44:15
Original
968 Leute haben es durchsucht

How to Create Interdependent Classes in C   Using Forward Declarations?

Erstellen voneinander abhängiger Klassen in C durch Forward-Deklarationen

Wie kann man in C eine Beziehung zwischen zwei Klassen herstellen, in denen jede ein Objekt von enthält? der andere Klassentyp?

Direktes Objekt Einbetten

Leider ist es nicht möglich, Objekte jeder Klasse direkt in die andere einzubetten. Dieser Zirkelverweis erzeugt einen unendlichen Platzbedarf.

Problemumgehung: Zeigerbasierte Beziehung

Stattdessen können wir Zeiger verwenden, um diese Beziehung herzustellen. Um die zirkuläre Abhängigkeit zu durchbrechen, verwenden wir Vorwärtsdeklarationen.

Vorwärtsdeklarationen

In den Klassenköpfen (z. B. bar.h und foo.h) deklarieren wir die Existenz der anderen Klasse, ohne sie zu definieren:

// bar.h
class foo; // Declare that the class foo exists

class bar {
public:
  foo* getFoo();
protected:
  foo* f;
};
Nach dem Login kopieren
// foo.h
class bar; // Declare that the class bar exists

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

Jetzt weiß jeder Header von der anderen Klasse, ohne sie vollständig zu definieren Definition.

Klassenimplementierungen

In den entsprechenden .cpp-Dateien fügen wir den anderen Header ein, um Zugriff auf die vollständige Definition zu erhalten:

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

// ... Implementations of foo methods
Nach dem Login kopieren
// bar.cpp
#include "foo.h"

// ... Implementations of bar methods
Nach dem Login kopieren

Verwendung in main()

Schließlich, in main.cpp, wir kann Instanzen der Klassen erstellen:

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

int main() {
  foo myFoo;
  bar myBar;
}
Nach dem Login kopieren

Diese Strategie ermöglicht es uns, Klassen zu erstellen, die sich gegenseitig nutzen, ohne dass das Zirkelverweisproblem auftritt.

Das obige ist der detaillierte Inhalt vonWie erstelle ich voneinander abhängige Klassen in C mithilfe von Forward-Deklarationen?. 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