Avatar ·

Wann kann man Forward Declaration in C++ verwenden?

Hallo zusammen! Ich lerne C++ und stoße ständig auf den Begriff "forward declaration". Ich verstehe zwar ungefähr, was das ist, aber mir ist nicht ganz klar, wann man es *braucht* und wann es die Sache nur komplizierter macht.\n\nZum Beispiel habe ich zwei Klassen: `A` und `B`. Klasse `A` enthält einen Zeiger auf `B`, und Klasse `B` enthält ein Objekt von `A` by value. Ich versuche, etwa so zu schreiben:\n\n```cpp\n// A.h\n#include "B.h"\nclass A {\n B* ptr;\n};\n\n// B.h\n#include "A.h"\nclass B {\n A obj;\n};\n```\n\nNatürlich kompiliert das nicht wegen der zirkulären Abhängigkeit. Ich habe gehört, dass man Forward Declaration verwenden kann, um diesen Zyklus zu durchbrechen. Aber wie genau? Und in welchen anderen Situationen wird das angewendet?\n\nAußerdem habe ich gesehen, dass man in Header-Dateien manchmal `class MyClass;` vor der Definition schreibt.