[gelöst] getrennte Klassendefinition, Konstruktor mit Objekt als Argument oder so ähnlich



  • Hallo, tolles Forum, da ich schon zu lange an meinem problem tüfftle, bitte ich um Hinweise. Prinzipiell gehts drum, ein Objekt an den Konstruktor einer Klasse zu übergeben, der eine getrennte Klassendefinition aufweist.
    Es gibt 3 Klassen, A,B,C; Klasse A soll von B nach C übergeben werden.

    So siehts ca. aus:

    [cpp]
    //classA soll was sein, dass von B nach C durchgereicht wird
    class classA
    {
        // nix besonderes
    }
    
    //classB besitzt ein Objekt der Klasse A und C. Klasse A übergeb ich einfach
    //im main. soweit kein problem.
    class classB
    {
        public:
            classB(classA &cA);
        private:
            classA _cA;
            classC _cC;  // <---- problem, wie weiß C dass es A aufnehmen soll???
                         //   classC _cC(cA) geht nicht, da kommt beim maken ein     
                         //   Fehler ala: error: invalid use of member (did you forget the ‘&’ ?)
    };
    
    classB::classB(classA &cA):_cA(cA)
    {
        // hier brauch ich A und C
    }
    
    //Klasse C hat einen Konstruktor, der Klasse A verlangt. jetzt wirds schräg.
    class classC
    {
        public:
            classC(classA &cA);
    }
    
    classC::classC(classA &cA)
    {
        // hier würd ich gern mit C arbeiten können
    }
    [/cpp]
    

    Dann gibts halt noch wo eine main Funktion die ein Objekt der Klasse A und B erzeugt und A an B weitergibt.
    Aber wo und wie muss ich jetzt Klasse B sagen, dass es Klasse A an Klasse C "weiterleiten" soll?
    Das ganze wär kein Problem, wenn ich keine getrennte Klassendefinition hätt, würd ich mal sagen. Mag ich aber nicht. Eine Lösung mit Zeigern wär auch vorstellbar. Aber ich will wissen, ob es da eine bessere Methode gibt. Hoff' ich hab mich einigermaßen klar ausgedrückt.

    Wer kann mir helfen?

    😕



  • Vielleicht hab ich das Problem nicht ganz verstanden, aber was spricht gegen:

    classB::classB(classA &cA):_cA(cA),_cC(cA)
    {
        // hier brauch ich A und C
    }
    


  • du hast recht, vielen dank. hatte das zwar schon ausprobiert - aber mit einer methode von A die einfach nur leer war 🕶
    nochmals vielen dank



  • Abgesehen von einigen Fehlern (fehldende Semikolon nach Klassendefinition, classC für classB unbekannt) hättest du folgendes Problem:

    Ohne den Aufruf des parametrisierten classC-Konstruktors in der
    Initialisierungsliste des classB-Konstruktors könntest du ohnehin keine Instanz von classB anlegen, da in dem Fall versucht würde, den standard-Konstruktor von classC aufzurufuen.
    Der ist aber nicht vorhanden.


Anmelden zum Antworten