Y at-il un moyen en C ++ d'étendre / "hériter" des énumérations?
C'EST À DIRE:
enum Enum {A,B,C};
enum EnumEx : public Enum {D,E,F};
ou au moins définir une conversion entre eux?
Y at-il un moyen en C ++ d'étendre / "hériter" des énumérations?
C'EST À DIRE:
enum Enum {A,B,C};
enum EnumEx : public Enum {D,E,F};
ou au moins définir une conversion entre eux?
Non, il n'est pas.
enum
sont vraiment pauvre chose en C++, et c'est malheureux de cours.
Même l' class enum
introduit dans C++0x ne traite pas de ce problème de l'extensibilité (même si ils font des choses pour le type de sécurité au moins).
Le seul avantage de l' enum
, c'est qu'ils n'existent pas: ils offrent un certain type de sécurité, tout en n'imposant pas de gestion d'exécution comme ils sont remplacés par le compilateur directement.
Si vous voulez une telle bête, vous aurez à travailler vous-même:
MyEnum
, qui contient un int (en gros)vous pouvez maintenant étendre votre classe (ajout nommé constructeurs) à volonté...
C'est une solution de contournement si, je n'ai jamais trouvé un satistifying façon de traiter avec une énumération...
Si vous avez été en mesure de créer une sous-classe d'une enum qu'il faudrait travailler dans l'autre sens.
L'ensemble des instances d'une sous-classe est un sous-ensemble des instances de la super-classe. Pensez à la norme "Forme" par exemple. La Forme de la classe représente l'ensemble de toutes les Formes. Le Cercle de la classe, de ses sous-classe, représente le sous-ensemble de Formes qui sont des Cercles.
Donc, pour être cohérente, une sous-classe d'une enum devrait contenir un sous-ensemble des éléments de l'enum il hérite.
(Et non, C++ ne prend pas en charge cette fonction.)
http://www.codeproject.com/KB/cpp/InheritEnum.aspx passe en revue une méthode pour créer une énumération étendue.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.