Super() Konstruktor aufrufen
-
Hallo,
ich habe 2 Konstruktoren A() und A(int x),
ich möchte in Konst A(x) nun zusätzlich Dinge tun (doit())
und dann A() aufrufen (wo der Rest erledigt wird).
A(x){
doit();
A(); // Oder wie mach ich das?
}wie kann ich das in C++ machen?
Danke und Gruss,
Stefan
-
das ist leider nicht moeglich. ein ctor kann keinen anderen aufrufen.
normalerweise packt man dann den gemeinsamen code in eine eigene funktion und ruft die in den beiden ctors auf...
-
In dem Fall könnte man eventuell dem Parameter des einen Konstruktors einen default-Wert geben und so auf den Konstruktor ohne Parameter verzichten:
A(int x=0);
-
class A A(){ ... } ... class B : public A B() : A::A() { ... } ...
was soll daran nicht gehen?
-
und wenn man den text nochmal aufmerksam liest...
class A { A(){ ... } A(int){ ... A(); } ...
geht auch problemlos.
-
ufs90ef schrieb:
class A A(){ ... } ... class B : public A B() : A::A() { ... } ...
was soll daran nicht gehen?
Das ist was ganz anderes und nicht das was er meinte. Die Version mit der Methode ist da schon wesentlich gängiger und vermeidet die sinnlose vererbung
BR
-
die antwort war auch nen schnellschuss, bevor ich die frage richtig gelesen hatte
-
ufs90ef schrieb:
die antwort war auch nen schnellschuss, bevor ich die frage richtig gelesen hatte
Aber an und für sich ist es eigentlich richtig gewesen da ja Super() afaik aus Java und ruft den Basis C'tor auf oder so. KA ich kann kein Java
Aber der wollte ja eigentlich was anderes wissenBR
-
jo, "super" ist in java ne referenz auf das mutterobjekt. super() ruft dann halt den konstruktor auf.
super.super.super.super.super.foo() geht auch ^^