Ableiten von enum



  • Hallo

    Das was im Titel steht wird wohl nicht möglich sein. Trifft aber das Problem das ich zu lösen habe.

    Von einer Basisklasse nennen wir sie "CBaseClass" werden 2 weiter Klassen abgleitet. "CDerived1" und "CDerived2".

    Die Klasse CBaseClass enthält eine Membervariable m_option vom Typ Enum.

    Beim Konstruktor der jeweiligen Klassen wird der Wert für m_option in einem int übergeben.

    Die Klassen haben nun gemeinsame aber auch unterschiedliche Optionen.

    Gemeinsame Optionen

    0 - KeineOption
    1 - OptionAllgemein

    speziell Derived1

    2 - OptionHund
    3 - OptionKatze

    speziell Derived2

    2 - OptionHaus
    3 - OptionHütte

    Nun wäre das Problem gelöst wenn ich einen enum hätte für die Gemeinsamen optionen und davon die anderen beiden ableiten würde.

    Da dies aber wohl nicht geht, hier die Frage hat mir jemand ne andere Lösung?



  • scheint irgendwie nicht so trivial zu sein.



  • Man "erbt" Variablen, nicht Werte. Fuegt man eine neue Eigenschaft im Ableitungsschritt hinzu, so braucht es eine neue Variable. Alternativ kann auch eine virtuelle Funktion a la c->hasValue(14) in der Basisklasse deklariert werden, die die Frage nach Hund/Katze mit Ja/Nein beantwortet.





  • Alternativ kann auch eine virtuelle Funktion a la c->hasValue(14) in der Basisklasse deklariert werden, die die Frage nach Hund/Katze mit Ja/Nein beantwortet.

    Das mag vieleicht bei 2 Optionen funktionieren. Habe aber mehrere, das war nur ein Beispiel.

    Danke Source2702 für den Link. Da gibt es aber einen ganz entscheidenden Grund wieso das ganze für meinen Fall nicht geht. Und das steht schon in der Überschrift: unambiguously. Das heißt die Werte müssen eindeutig sein. Bei mir gibt es ja aber die Zahl 2 und 3 mehrfach.



  • Ok. Der weiterführende Link führte mich zu einer passenderen Lösung:
    http://www.codeproject.com/KB/cpp/ImprovedEnum.aspx.

    Danke.


Anmelden zum Antworten