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
Patricia ArquetteOriginal
2024-11-10 08:16:02724Durchsuche

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;
};
// foo.h
class bar; // Say bar exists without defining it.

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

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

bar* foo::getBar() { return f; }

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!

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