Konstanten in Basisklasse deklarieren und in abgeleiteter verwenden



  • Hallo,

    folgendes Problem:

    Ich habe eine Basisklasse, deren Methoden eine Konstate benutzen.
    Der Wert dieser Konstanten ist jedoch für jede Basisklasse anders.
    Wenn ich nun die geerbten Methoden in der abgeleiteten Klasse aufrufe, wie stelle ich sicher, dass auch die Konstante der abgeleiteten Klasse verwendet wird?
    Gibt es einen eleganteren Weg, als die Konstaten der abgeleiten Klasse über den Konstruktor an die Basisklasse weiterzureichen?



  • static__ schrieb:

    Hallo,

    folgendes Problem:

    Ich habe eine Basisklasse, deren Methoden eine Konstate benutzen.
    Der Wert dieser Konstanten ist jedoch für jede Basisklasse anders.
    Wenn ich nun die geerbten Methoden in der abgeleiteten Klasse aufrufe, wie stelle ich sicher, dass auch die Konstante der abgeleiteten Klasse verwendet wird?
    Gibt es einen eleganteren Weg, als die Konstaten der abgeleiten Klasse über den Konstruktor an die Basisklasse weiterzureichen?

    Oh, sorry. Ich meine: "Der Wert dieser Konstanten ist jedoch für jede abgeleitete Klasse anders."



  • Du darfst die nicht noch mal in der abgeleiteten Klasse definieren.
    Und in der Basisklasse sollten diese Variablen "protected" sein.

    Zeig doch mal deine Klassen.

    Möglich ist auch, dass du die Variablen nicht richtig initialisiert hast...



  • static__ schrieb:

    Gibt es einen eleganteren Weg, als die Konstaten der abgeleiten Klasse über den Konstruktor an die Basisklasse weiterzureichen?

    Was ist denn daran nicht elegant?
    Alternativ vielleicht virtuelle Getter-Funktionen statt Konstanten nehmen.



  • Jockelx schrieb:

    static__ schrieb:

    Gibt es einen eleganteren Weg, als die Konstaten der abgeleiten Klasse über den Konstruktor an die Basisklasse weiterzureichen?

    Was ist denn daran nicht elegant?
    Alternativ vielleicht virtuelle Getter-Funktionen statt Konstanten nehmen.

    Ich wollte nur nach Möglichkeit den Konstruktor nicht so zumüllen, deshalb. Ich nehme dann deinen zweiten Vorschlag, an sowas hatte ich auch schon gedacht. Danke.


Log in to reply