vorwaertsdeklaration / innere klasse



  • hallo,

    ich versuche zwischen 2 verschiedenen inneren klassen eine bidirektionale
    referenz ueber jeweils einen pointer auf die andere klasse zu realisieren.

    ein beispiel fuer mein problem:

    ------------
    class A
    {
    public:
            class AB
            {
            public:
                    B::BA *bba;
            };
    };

    class B
    {
    public:
            class BA
            {
            public:
                    A::AB *aab;
            };
    };
    ------------

    das funktioniert so nicht, da die klasse B::BA in A::AB noch nicht bekannt
    ist.

    eine vorherige deklaration:

    class B::BA;

    funktioniert nicht und produziert einen compilererror.

    ich frage mich, ob dies ueberhaupt moeglich ist und wenn, wie die
    vorwaertsdeklaration hierfuer aussehen muesste?

    danke fuer eure hilfe.

    martin



  • hast dus auch so probiert:
    class b;
    class b::BLa;

    wenn das nmicht geht würd ich sagen es geht nicht

    mfg
    Glamdring



  • Auch das kann nicht gehen, da der Compiler ja gar nicht wüsste, ob A::AB private, public oder protected ist. So in etwa sollte es aber funktionieren:

    class A
    {
    public:
        class AB;
    };
    
    class B
    {
    public:
        class BA;
    };
    
    class A::AB
    {
        B::BA* ba;
    };
    
    class B::BA
    {
        A::AB* ab;
    };
    

Anmelden zum Antworten