enum-Typ in abgeleiteter Klasse erweitern

jokey2

Erfahrenes Mitglied
Folgendes Problem:
Ich habe eine Klasse B, abgeleitet von Klasse A. In Klasse A habe ich einen enum-Typ definiert. In klasse B möchte ich dem enum-Typ noch Werte hinzufügen:

Code:
class A
{
  public:
  typedef enum t_EnumA
  {
    ET_NULL = 0,
    ET_EINS,
    ET_ZWEI
  };

  ...

}

class B : public A
{
  ... hier möchte ich t_EnumA erweitern
}
Geht sowas und wenn ja, wie geht das?
 
Hallo,

nein das geht nicht.
Mit enum definiert man sich einen neuen Typ. Den Wertebereich von einem Typen
kann man nicht so einfach erweitern. Das einzigste wo es geht wenn man
den Begriff "Wertebereich eines Typs erweitern" weiträumig definiert, ist bei der
Vererbung. Aber das gilt nur für "class Typen"...

Was du allerdings machen könntest ist den Typ t_EnumA in deiner Subklasse
mit dem gleichen Namen neu zu definieren, ala:

C++:
class A {
    protected:
        typedef enum t_EnumA {  
            ET_NULL = 0,
            ET_EINS,
            ET_ZWEI
        };
    private:
        //klar: gültiger Wertebereich ist ET_NULL, ET_EINS, ET_ZWEI
        t_EnumA enum_a;
};

class B : public A {
    public:
        B() : enum_b(ET_DREI), /* fehler: */ enum_c(ET_DREI){}

    private:
        typedef enum t_EnumA {
            ET_NULL,
            ET_EINS,
            ET_ZWEI,
            ET_DREI
        };

        //dieses Objekt ist vom Typ B::t_EnumA
        //gültiger Wertebereich ist ET_NULL, ET_EINS, ET_ZWEI, ET_DREI
        t_EnumA enum_b; 

        //dieses Objekt ist vom Typ A::t_EnumA
        //gültiger Wertebereich ist ET_NULL, ET_EINS, ET_ZWEI
        A::t_EnumA enum_c;
};

Gruß,
RedWing
 
Das hatte ich mir schon gedacht, aber es hätte ja sein können, daß es was gibt, das ich noch nicht weiß ;-).
Trotzdem Danke für die Antwort.
 
Zurück