Problem beim initialisieren von const Attributen - Konstruktor?
-
ich habe eine Klasse und vererbe diese klasse an 2 weitere nun will ich aber wenn ich ein objekt der klasse B mache dass x = 3 ist und wenn ich ein objekt der klasse c ist x = 2 ist (das solll immer so sein und const sollte es sein) - also beim konstruktoraufruf! blos wie mach ich das am besten ohne dass ich zb immer B(string name, int x):A(name, x); also das x mitschleppe? ->so soll es sein B(string name):A(name); und x soll selbstständig initialisiert werden?? hab da gesehen dass das mit const ein bisschen schwieriger geht da man anscheinend den elementinitialisier verwenden muss?
class A { const int x; string name; public: A(string name); } class B : public A{ B(string name):A(name); } class C : public A{ C(string name):A(name); }
-
wie würdest du es denn ohne const machen??
der ctor weiss ja nicht, welchen Typ du erstellt hast - dass kann nur der 'unterste' ctor wissen. Und warum sollte der den Wert nicht an den 'obersten' Ctor weitergeben?
-
das x musst du auf jedenfall mitschleppen, aber das ist ein vertretbares übel.
-
thx habs gecheckt hab einfach den konstruktor der klassa A um 1 erweitert und einfach ein wert mitgegeben!