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.


Anmelden zum Antworten