MS Visual C++ fordert forward declaration. Warum?
-
Hi,
woran könnte es liegen, dass forward declarations gefordert werden, obwohl sich die Klassen nicht direkt gegenseitig nutzen?
Danke und Gruß
kaboom
-
Beispiel?
-
Hey,
nehmen wir an, CAndereKlasse ist eine normale Klasse, welche unter normalen Umständen auch läuft und keine Objekte anderer Klassen enthält.
CKlasse.h
#include "CAndereKlasse.h" // ### Hier wird jetzt eine Vorausdeklaration gefordert. Warum? class CAndereKlasse; class CKlasse { protected: // ### Warum muss ich einen Zeiger benutzen? Bei festen Objekten meckert er, dass die Klasse CAndereKlasse nicht deklariert sei. CAndereKlasse *m_pFoo; };
CKlasse2.h
#include "CKlasse.h" #include "CAndereKlasse.h" // ### Wieder Vorausdeklaration. Warum? class CKlasse; class CAndereKlasse; class CKlasse2 { private: // ### Wieder darf ich nur Zeiger benutzen. CAndereKlasse *m_pFoo; CKlasse *m_pBar; };
Von CKlasse werden noch Objekte abgeleitet, aber das ist - glaube ich - unwichtig.
Hat jemand die Lösung? Wäre echt cool.
Danke!!
kaboom
-
Hast du getestet, ob das Problem mit deinem Minimalbeispiel überhaupt auftritt? Das geschilderte Problem dritt eigentlich immer dann auf, wenn sich zwei oder mehr Headerdateien direkt oder indirekt gegenseitig einbinden.