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!