Forward-Deklaration auf innere Klasse



  • Hallo zusammen!

    Ich bin gerade in die Verlegenheit gekommen, eine Forward-Deklaration auf eine innere Klasse zu implementieren.
    Also in etwa so:

    class OuterClass::InnerClass;
    
    class MyClass
    {
       ...
       OuterClass::InnerClass *obj;
       ...
    }
    

    Für meinen Compiler ist "InnerClass" allerdings ein undefiniertes Symbol. Wie sind denn solche Forwarddeklarationen normalerweise üblich, wenn man mit inneren Klassen arbeitet?

    Danke!

    Grüße,
    TS++



  • Das geht garnicht 😞



  • Was mach ich denn dann aber in folgender Situation:

    //OuterClass.h:
    //-------------
    
    #include "MyClass.h"
    
    class OuterClass
    {
       public:
       class InnerClass
       {
          ....
          void mach_was(MyClass *obj){...}
          ....
       };
    };
    
    //MyClass.h:
    /-----------
    
    class OuterClass::InnerClass;
    
    class MyClass
    {
       ....
       void mach_was(OuterClass::InnerClass *obj);
       ....
    };
    

    Ich muss ja in 'OuterClass.h' 'MyClass.h' vollständig includen! In 'MyClass.h' bleibt mir ja dann nur noch die Möglichkeit eine ForwardDeklaration zu nutzen. Oder lässt sich das Problem aufgrund der gegebenen Einschränkung auch anders lösen?

    Grüße,
    TS++



  • Also in deinem Beispiel jetzt, würde es reichen wenn in outerclass.h eine Forward-Deklaration für MyClass ist. So dass du in myclass.h die outerclass.h einbinden kannst.

    Ansonsten müsstest du vielleicht auf die Klassenverschachtelung verzichten.. Oder durch namespace ersetzen. Die kann man forward-deklarieren:

    namespace Blub { class Bla; }


Anmelden zum Antworten