Problem mit Konstruktor von Abgeleiteter Klasse
-
Hi @all.
Ich habe hier eine Klasse abgeleitet doch irgendwie willd er Konstruktor nicht.
mmain fkt:CTest Objekt(40); cout << Objekt.getfirst() << endl; CVERERBT Neu(30); cout << Neu.getfirst();
Ich erzeuge ein Objekt von meiner Basis und übergebe 40. Klappt wunderbar.
Danach will ich an die Vererbte 30 übergeben. Allerdings soll das initialisieren noch durch den Konstruktor der Basis passieren der wird ja soweit ich das verstanden habe auch durchlaufen oder? Also müsste das doch so gehen oder? Naja jedenfalls funktioniert es nicht
Hier mal die Basis:class CTest { protected: int first; public: CTest(int a=0); virtual ~CTest(); int getfirst(); }; //Implementierungen: CTest::CTest(int a) { first=a; } CTest::~CTest() { } int CTest::getfirst() { return first; }
und die ableitung:
class CVERERBT : public CTest { public: CVERERBT(); virtual ~CVERERBT(); }; //Implementierungen: CVERERBT::CVERERBT() : CTest(a) { } CVERERBT::~CVERERBT() { }
thx!!!
cu
-
Nabend,
dein CTor der Klasse 'CVERERBT' hat keine Parameter.
mfg
v R
-
muss er denn? ich dachte das geht erstmal an den konstruktor von der basis-klasse...
-
Wenn du willst, dass der Konstrukter der Basisklasse Parameter bekommt, muss er.
-
nunja, wenn du ein objekt der abgeleiteten klasse CVERERB erstellst, wird zwangsläufig der CTOR der abgeleiteten aufgerufen -> unterbrecht mich wenn ich mich irre
-
enno-tyrant schrieb:
nunja, wenn du ein objekt der abgeleiteten klasse CVERERB erstellst, wird zwangsläufig der CTOR der abgeleiteten aufgerufen -> unterbrecht mich wenn ich mich irre
Aber wo nimmt er den Wert her?
mfg
v R
-
virtuell Realisticer schrieb:
...Aber wo nimmt er den Wert her?...
ist eine gute frage, gehe ja auch davon aus daß sein programm z.b. auch deshalb nicht läuft (bin mir ja nicht sicher, sagt ruhig wenn ich was falsch verstanden habe)
-
enno-tyrant schrieb:
virtuell Realisticer schrieb:
...Aber wo nimmt er den Wert her?...
ist eine gute frage, gehe ja auch davon aus daß sein programm z.b. auch deshalb nicht läuft (bin mir ja nicht sicher, sagt ruhig wenn ich was falsch verstanden habe)
Deswegen meinte ich ja, dass sein CTor keinen Parameter entgegennimmt ;).
Ausserdem muesste er bei dem vorhandenen CTor meckern, woher kommt denn 'a'?
mfg
v R
-
virtuell Realisticer schrieb:
...Ausserdem muesste er bei dem vorhandenen CTor meckern, woher kommt denn 'a'?...
mein ich auch,
andererseits verstehe ich auch dies nicht:CVERERBT::CVERERBT() : CTest(a){}
CTOR von CVERERBT, aber was soll das ': CTEST(a)' hier und was macht es tatsächlich?
-
enno-tyrant schrieb:
virtuell Realisticer schrieb:
...Ausserdem muesste er bei dem vorhandenen CTor meckern, woher kommt denn 'a'?...
mein ich auch,
andererseits verstehe ich auch dies nicht:CVERERBT::CVERERBT() : CTest(a){}
CTOR von CVERERBT, aber was soll das ': CTEST(a)' hier und was macht es tatsächlich?
Er ruft hier den CTor der Basisklasse auf. Das ist schon korrekt, nur ich sehe
nicht, wo hier 'a' herkommt. Denke der Code sollte eher so aussehen:class CVERERBT : public CTest { public: CVERERBT(); virtual ~CVERERBT(); }; //Implementierungen: CVERERBT::CVERERBT(int a) : CTest(a) { } CVERERBT::~CVERERBT() { }
mfg
v R
-
so macht die sache sinn, und was gelernt habe ich auch noch