Klasse in Konstruktor nutzen



  • Hallo,

    ich habe mal eine grundlegende Frage, die mir leider diverse Einführungen von C++ nicht beantworten.

    Wie kann man in C++ Beziehungen zwischen zwei Klassen hererstellen?

    Konkret: Ich habe eine Klasse B und die soll im Konstruktor auf die Klasse A zugreifen. Wenn A die Oberklasse von B ist, kann ich ja in der Initialisierungsliste auf die Klasse zugreifen, bspw.:

    KlasseB::KlasseB(string text, int nummer) : KlasseA(text), nummer(nummer){}
    

    Das geht aber nicht, wenn Klasse A in keinem Verhältnis zu Klasse B steht.
    Was muss ich tun? Wie weiß Klasse B, dass es Klasse A gibt und wie kann sie im Kontruktor auf sie zugreifen?

    Danke für Antworten!



  • Du willst nicht auf eine Klasse zugreifen sondern auf ein Objekt/eine Instanz.

    Dann musst du entweder im Konstruktor oder mit einem Memberfunktionsaufruf einen Pointer oder eine Rererenz darauf übergeben.



  • Nicht unbedingt, so würde es auch gehen:

    class Foo
    {
    public:
    	Foo(int i, double d){}
    };
    
    class Bar
    {
    	Foo f;
    
    public:
    	Bar()
    	 : f(4711, 3.14)
    	 {}
    };
    

    Kommt halt drauf an was der OP vor hat...



  • Ich habe es jetzt folgendermaßen gelöst:

    1. Include des Headers von KlasseA (das hatte ich auch vergessen!)
    2. Unter den Attributen von KlasseB dann Verknüpfung herstellen: KlasseA instanzVonA

    Dann kann ich in der Initialisierungsliste vom Konstruktor von KlasseB mit instanzVonA(wert1,wert2) die Instanz der KlasseA und deren beiden Werte einbinden.

    Danke! 🙂



  • Ja, im Prinzip das Vorgehen von Skym0sh0 😃


Anmelden zum Antworten