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 instanzVonADann 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