Verschiedene Konstruktoren verwenden
-
Hallo erst mal!

Ich habe zwei Konstruktoren:
Klassenname::Klassenname(int a, int b, int c) { private_a = a; private_b = b; private_c = c; }und
Klassenname::Klassenname(int a, int b) { private_a = a; private_b = b; private_c = 5; }Im Hauptprogramm:
... cin<<a; cin<<b; cin<<c; Array[0} = new Klassenname(int a, int b, int c)Mein Ziel ist es jetzt es irgendwie zu erreichen, dass wenn ich kein c eingebe, der zweite Konstruktor mit dem default Wert 5 aufgerufen wird. Das das so aber irgendwie nicht geht, da die Konsole auf eine Eingabe wartet ist mir klar.
Irgendwie möchte ich halt zur Programmlaufzeit entscheiden, ob ein c eingelesen wird oder halt der Defaultwert benutzt wirdDanke euch für die Hilfe!
-
Noch kurz meine Idee, die mich aber irgendwie nicht zufriedend stellt

Abfrage ob Nutzer Defaultwert nutzen will oder selbst eingeben will und je nachdem
Array[0} = new Klassenname(int a, int b, int c)oder
Array[0} = new Klassenname(int a, int b)
-
Gast21 schrieb:
Klassenname::Klassenname(int a, int b, int c) { private_a = a; private_b = b; private_c = c; }und
Klassenname::Klassenname(int a, int b) { private_a = a; private_b = b; private_c = 5; }Besser:
Klassenname::Klassenname(int a, int b, int c = 5) : private_a(a), private_b(b), private_c(c) { }Meine Idee wäre es, dass nur eine Zeile eingelesen wird und je nach dem, ob diese zwei oder drei Zahlen enthält, der Default-Wert angenommen wird oder eben nicht.
#include <sstream> ... cout << "Gib a, b und ev. c ein, dann Enter: " << flush; string s; getline(cin, s); istringstream i(s); i >> a >> b; if (i >> c) array[0] = new Klassenname(a, b, c); else array[0] = new Klassenname(a, b);
-
Hi,
Klassenname::Klassenname(int a, int b, int c = 5) { private_a = a; private_b = b; private_c = c; }edit: zu langsam
