Klasse A und B - Konfliktprobleme



  • Klasse A und B werden deklariert

    In Klasse A wird Klasse B erzeugt. A inkludiert Klasse B

    Klasse B will Zugriff auf die Methoden von A.
    Klasse B müsste also A kennen.

    1. Idee: Zeiger auf A indem B erzeugt wurde
    Versuch: in Klasse B wird A inkludiert. Geht aber nicht, weil A bereits B inkludiert hat.
    2. Idee: Klasse B wird von A geerbt. - Geht aber nicht, weil Inkludierung nicht geht. Öh, bestimmt Rekursivproblem?

    Was tun?



  • eine forward-deklaration:

    //A.hpp
    class B;
    
    class A
    {
       B b;//geht nicht
       B& b;//geht
       B* b;//geht
       foo(B b);//geht nicht
       foo(B& b);//geht
       foo(B* b);//geht
    };
    
    #include "B.hpp"//nicht vergessen, am ENDE dann doch noch zu inkludieren
    
    //B.hpp
    #include "A.hpp"
    
    class B
    {
       A b;//geht
       A& b;//geht
       A* b;//geht
       foo(A b);//geht
       foo(A& b);//geht
       foo(A* b);//geht
    };
    

    normalerweise kannst du ohne schmerzen darauf verzichten, daß die eine klasse wirklich alle details der anderen schon im header kennt und dich auf zeiger und referenzen in der schnittstelle beaschränken. in den *.cpp-dateien kannste dann frei alles inkludieren und ganz normal weitermachen.



  • Heftig. Das funktioniert wirklich. Obwohl meine beiden Klassen schon geerbte Klassen sind. Und neue Argumente in Konstruktor über Elementinitialisierer der nicht geerbt ist.

    Wusste nicht, dass das alles geht.

    Danke!


Anmelden zum Antworten