Konstruktor überladen ohne Elementeninitialisierungsliste neu zu schreiben
-
Wenn ich den Konstruktor überlade, muss ich doch auch die Elementeninitialisierungsliste neu schreiben. Lässt sich das irgentwie umgehen, weil wenn man einen Wert bei einer Initialisierung ändert, muss man dies gleich in allen anderen Konstruktoren tun. Da gibt's bestimmt ne Möglichkeit das zu vereinfachen, oder?
mfg.
-
schreib doch einfach keine elemente in den überladenen konstruktor
vllt geht das so 
-
In C++ gibt es da leider keine Möglichkeit. In Java zB ist es möglich von einem Konstruktor aus einen anderen (überladenen) Konstruktor aufzurufen.
-
MartinMilbret schrieb:
schreib doch einfach keine elemente in den überladenen konstruktor
vllt geht das so 
Ne das geht leider nicht.
Schade, wäre echt praktisch....
mfg.
-
Wenn du unbedingt ne Initialisierungsliste benötigst und keine Create-Funktion die von allen Konstruktoren aufgerufen wird nehmen kannst/willst, dann gäbe es noch nen Weg:
#define GEN_INI_LIST(p1, p2, p3) m1( p1 ), m2( p2 ), m3( p3 ) struct Klasse { Klasse() : GEN_INI_LIST( 1, 2, 3 ) {} int m1, m2, m3; }:Kann man natürlich noch ordentlich verbessern, aber das Prinzip sollte dir klar werden.
-
dazu gibt es übrigens einen vorschlag im C++ Committee: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1895.pdf