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!


Anmelden zum Antworten