Heim > Backend-Entwicklung > C++ > Wie erstelle ich zwei C-Klassen, die sich gegenseitig referenzieren?

Wie erstelle ich zwei C-Klassen, die sich gegenseitig referenzieren?

Patricia Arquette
Freigeben: 2024-11-10 08:16:02
Original
714 Leute haben es durchsucht

How to Create Two C   Classes that Mutually Reference Each Other?

Zwei Klassen, die sich gegenseitig referenzieren

Das Erstellen von zwei C-Klassen, die jeweils ein Objekt des anderen Typs direkt enthalten, ist aufgrund der nicht möglich Zirkelbezugsproblem. Eine Problemumgehung besteht jedoch darin, Zeiger zu verwenden, um aufeinander zu verweisen.

Forward-Deklarationen und Zeigerverwendung

Um dies zu erreichen, verwenden Sie Forward-Deklarationen in den Header-Dateien, um das festzulegen Existenz der anderen Klasse, ohne sie zu definieren:

// bar.h
class foo; // Say foo exists without defining it.

class bar {
public:
  foo* getFoo();
protected:
  foo* f;
};
Nach dem Login kopieren
// foo.h
class bar; // Say bar exists without defining it.

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

Dann in die entsprechenden .cpp-Dateien einschließen der andere Header, um die Klasse vollständig zu definieren:

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

foo* bar::getFoo() { return f; }
Nach dem Login kopieren
// foo.cpp
#include "bar.h"

bar* foo::getBar() { return f; }
Nach dem Login kopieren

Dieser Ansatz unterbricht die zirkuläre Referenzschleife, da die Vorwärtsdeklarationen es den Klassen ermöglichen, die Existenz der anderen zu bestätigen, ohne ihre Header einzubeziehen, wodurch unendliche Platzprobleme vermieden werden die Objekte.

Das obige ist der detaillierte Inhalt vonWie erstelle ich zwei C-Klassen, die sich gegenseitig referenzieren?. 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