Konstante Variablen vererben?



  • Sorry, dass ich dafür einen neuen Thread aufmache, aber das Thema erscheint mir doch recht komplex:

    Basisklasse deklariert konstante Variable

    Abgeleitete Klasse soll diese erben, und der konstanten variable etwas zuweisen, also jede abgeleitete Klasse, soll diese konstante Variable haben aber jeweils mit einem anderen Wert.
    Zusätzlich sollen natürlich alle Klasseninstanzen den gleichen Wert benutzen, deswegen böte sich static auch an. (beides also)

    un könnte ich viel machen:

    Variable nicht in der Basisklasse deklarieren sondern jeweils immer nur static const in jeder einzelnen Klasse machen.

    Pro: Man hat const und static dabei
    Contra: Man kann anhand der Basisklasse nicht einsehen, dass diese Elemente jeder Klasse gegeben sind.

    Frage: Geht static und const zusammen überhaupt? 😕

    Eine Funktion statt einer Variable nehmen, die den Wert einfach zurückgibt.

    Pro: Die Funktion ist in der Basisklasse drin.
    Contra: Funktionen sind langsamer als ein direkter Zugriff auf eine konstante Variable, zusätzlich bei dynamischer Bindung durch rein virtuelle Funktion in Basisklasse.

    Frage: Man kann static und const aber dann garnicht festlegen, oder? 😕

    Die Variable in der Basisklasse irgendwie vordeklarieren und später konstant und statisch initialisieren.

    Ich hoffe es scheint durch, weshalb ich statisch und konstant machen möchte.
    Es wäre nett, mir die Fragen zu beantworten und eine der 3 Methoden auszuwählen oder eine Alternative mir evtl. auch zu sagen!

    Danke im Vorraus!

    MfG MAV



  • Am besten du hältst dich an die Regel alle Variablen *private* zu machen. Dann beantwortet sich deine Frage von selbst.

    Ansonsten würde es noch über den Konstruktor gehen.

    struct base {
    const int x, y;
    base(int x_, int y) : x(x_), y(y_) {}
    };

    struct derived : public base {
    derived() : base(10, 20) {}
    };



  • Optimale Lösung, genau so will ich es haben!!!

    Vielen, vielen Dank!!!!! :):):)

    MfG MAV

    [ Dieser Beitrag wurde am 04.05.2003 um 20:25 Uhr von Mis2com editiert. ]



  • Das funktioniert. Aber die optimale Lösung ist es sicherlich nicht.



  • Pfff, egal ob optimal oder nciht, genau so brauch ich das. 🙂



  • Echt sauber. ^^

    mfG MAV

    [ Dieser Beitrag wurde am 04.05.2003 um 20:32 Uhr von Mis2com editiert. ]


Anmelden zum Antworten