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
Linda HamiltonOriginal
2024-11-23 20:44:15969Durchsuche

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;
};
// foo.h
class bar; // Declare that the class bar exists

class foo {
public:
  bar* getBar();
protected:
  bar* f;
};

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
// bar.cpp
#include "foo.h"

// ... Implementations of bar methods

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;
}

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!

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