Klasse aus späterer header datei nutzen
-
Hallo.
Ich habe zwei Klassen unterschiedlichem Typs, wobei jede eine Referenz auf die andere enthält.
/*Enthalten in /Header/Header1.h*/ typedef class Class1{ private: public: class Class2 C; /*Fehler!*/ Class1(){ C = NULL; } }Class1;/*Enthalten in /Header/Header2.h*/ typedef class Class2{ private: public: class Class1 C; Class2(){ C = NULL; } }Class2;#include "../Header/Header1.h" #include "../Header/Header2.h"Mein Compiler meckert da jetzt verständlicherweise in Class1, weil er Class2 noch nicht kennt. Ich dachte, ich könnte das wie bei den structs mit dem typedef und dem struct / class vor den Typen, aber es kommt weiter die Fehlermeldung "Class1::Class2 used undefined class 'Class2'".
Wie kann ich damit umgehen, denn die Reihenfolge der Headerfiles zu vertauschen, wird ja das Problem nur verschieben.
Gruß,
CJens
-
Struct und class sind in C++ fast identisch. Der Unterschied: in structs ist alles public, wenn nichts anderes gesagt wird, in class private. Typedef und gedöns ist bei beiden unnötig.
Du hast zwei Probleme:
- verwende Pointer
- benutze eine Vorwärtsdeklaration
NULL war in C++ schon immer Müll. Benutze ab C++11 nullptr, sonst 0.
-
Wenn die beiden Klassen nur Referenzen auf die jeweils andere enthalten :
Class1.h // forward declaration class Class2; class Class1 { Class2& c2_; public: Class1( Class2& c2 ) : c2_( c2 ) { } }; Class2.h //foward declaration class Class1; class Class2 { Class1 c1_; public: Class2( Class1& c1 ) : c1_( c1 ) { } };In beiden .cpp Dateien musst du dann class1.h und class2.h inkludieren.