Konstruktor überladen
-
Moin,
ich weiss das es möglich ist den Konstruktor zu überladen, ich würde aber gerne etwas in dieser Art machen:
class clEins { private: int a; int b; int c; public: void aa() { a=1; b=2; c=a+b; //ausgabe 3 cout<<"aa() "<<c<<endl; }; void aa(int d) { aa(); c=c+d; //ausgabe 6 cout<<"aa(3) "<<c<<endl; }; };int main() { clEins eins; eins.aa(3); return (EXIT_SUCCESS); }Ich habe das mit folgendem Code versucht:
class clEins { private: int a; int b; int c; public: clEins() { a=1; b=2; c=a+b; //ausgabe 3 cout<<"ctor clEins() "<<c<<endl; }; clEins(int d) { clEins(); c = c+d; //ausgabe 6 cout<<"ctor clEins(3)"<<c<<endl; }; };Aber das scheint nicht zu klappen. Geht das überhaupt?
-
Nein, das geht nicht - in C++ dürfen sich Konstruktoren nicht gegenseitig aufrufen. Als Lösung könntest du die gemeinsamen Teile in eine init()-Funktion auslagern, die von beiden Konstruktoren verwendet wird.
(in deinem Beispiel ist es auch möglich, dem Ctor einen Default-Parameter mitzugeben:
clEins(int d=0);)
-
Schade das es nicht geht. Dann muss ich mal sehen wie ich das mache. Ich denke ich werde es wohl über eine init()-Funktion machen. Danke für die Antwort.