initialisierter Konstruktor soll auch für abgeleitete Klasse aufgerufen werden
-
Wie schon im Titel beschrieben möchte ich, dass mein Konstruktor(initialisiert) der Basisklasse auch für die abgeleitete Klasse aufgerufen wird.
Warum macht er das denn nicht automatisch... ?
CB b1(x,y) funktioniert
CA a1 funktioniert (er bekommt die Standartwerte der Basisklasse)
CA a2(x,y) geht nicht... er meckert!//Basisklasse CB::CB(int x, int y) : x(x) , y(y) { // bla bla } //Abgeleitete Klasse CA::CA(void) { }
-
1. Was meckert er?
2. Konstruktoren werden nicht mitvererbt. Hast Du auch für CA einen entsprechenden Konstruktor definiert?
-
Der Konstruktor der abgeleiteten Klasse weiss ja nicht, welchen Konstruktor er aufrufen soll. Gibst du keinen explizit an, nimmt er den Defaultkonstruktor an. Falls dieser nicht vorhanden ist, gibt es natürlich einen Fehler.
In die Initialisierungsliste des Konstruktors kannst du Basisklassenkonstruktoraufrufe hinschreiben:
CA::CA() : CB(36, 11) { }
-
ja schon --- nur möchte ich ein Objekt der Abgeleiteten Klasse erstellen, welches durch die initialisierungsliste initialisiert wird
CA objekt1(5,7); //Soll ein Objekt der Klasse A sein und die Eigenschaften x=5 -- y=7 haben (geht aber so nicht) CA objekt1(); //Soll ein Objekt der Klasse A sein und die Standarteigenschaften des Konstruktors der Klasse B nutzen (das Funktioniert)Warum kann ich also Objekte der Abgeleiteten Klasse nicht wie oben beschrieben erstellen?
-
TurboELK schrieb:
Warum kann ich also Objekte der Abgeleiteten Klasse nicht wie oben beschrieben erstellen?
Weil du keinen Konstruktor dafür bereitstellst.
Lösung:CA::CA(void) { } // UND CA::CA( int x, y ) : CB(x,y) { }
-
oh nein^^
also es geht, nur wenn ich jetzt mit new CA ein Objekt erstelle ist der Aufruf nicht eindeutig und ich bekomme eine Fehlermeldung
-
Dann zeig mal deinen Code.
-
TurboELK schrieb:
also es geht, nur wenn ich jetzt mit new CA ein Objekt erstelle ist der Aufruf nicht eindeutig und ich bekomme eine Fehlermeldung
Aber auf die Idee, deinen momentanen Code und die Fehlermeldung zu posten, kommst du natürlich nicht...

-
puh sorry,,, wollte antwort schnell löschen aber du warst schneller.... es geht!
-
(Offtopic:
Ha! Ich war schneller, obwohl wir in der gleichen Sekunde gepostet haben!
Oh, ich hab grad ein "Phänomen" entdeckt: In der Vorschau-Ansicht warst du schneller. Scheint so, dass mein Post immer oben steht, wenn wir gleichzeitig posten... :p)
-
Das ist ja echt fies
(Hatte ich übrigens noch nie, selbe Sekunde)