gegenseitige Abhängigkeit mehrerer Klassen



  • Hallo.
    Ich habe gerade erst angefangen, C++ zu programmieren und im Moment ein Problem mit mehreren Klasen, die voneinander abhängig sind. Sie sind von der Form

    class A{
    			B b;
    	     };
    
    class B{
    			C c;
    	    };
    
    class C{
    			B b;
    			D d;
    	     };
    
    class D{
    			A a;
    	    };
    

    und befinden sich jeweils in der Datei <Klassenname>.h.

    Mit Hilfe der Suchfunktion habe ich bereits herausgefunden, dass ich place holder wie z.B.

    class A;
    

    brauche.

    Mit zwei gegenseitig abhängigen Klassen gelingt mir das auch. In oben genanntem Fall aber bekomme ich immer mindestens zu einer Klasse einen Hinweis a la "field b has incomplete type".
    Könnte jemand von euch mir sagen, an welcher Stelle ich die place holder und die includes einfügen muss, damit es klappt?
    Schonmal Vielen Dank im Voraus.



  • Sind 1. Forward-Declaration's ...

    class B;
    
    class A
    {
        B* b;
    };
    
    class D
    {
        A* a;
    };
    
    class C
    {
        B* b;
        D* d;
    };
    
    class B
    {
         C* c;
    };
    

    ?



  • Danke, so funktioniert's.
    (Ich glaube, ich sollte mir alles, was mit "*" bzw. Pointern zu tun hat, nochmal anschauen...)


  • Mod

    J. schrieb:

    Könnte jemand von euch mir sagen, an welcher Stelle ich die place holder und die includes einfügen muss, damit es klappt?
    Schonmal Vielen Dank im Voraus.

    Das geht hier nicht, du hast zirkuläre Abhängigkeiten vom vollständigen Typ. B enthält ein C welches ein B enthält - B hat also indirekt sich selbst als Member und das ist nicht möglich.



  • Ich danke auch dir.
    Dass sich selbst zu enthalten unmöglich ist, erscheint mir logisch.
    Allerdings reichen mir auch Referenzen auf die Objekte, wie oben. Damit funktioniert das, was ich wollte.


Anmelden zum Antworten