C++ 中有没有办法扩展/“继承”枚举?
IE:
enum Enum {A,B,C};
enum EnumEx : public Enum {D,E,F};
或者至少定义它们之间的转换?
最佳答案
不,没有。
enum
在 C++ 中确实是个糟糕的东西,这当然是不幸的。
即使是 C++0x 中引入的 class enum
也没有解决这个可扩展性问题(尽管它们至少为类型安全做了一些事情)。
enum
的唯一优点是它们不存在:它们提供了一些类型安全性,同时由于它们被编译器直接替换,因此不会产生任何运行时开销。
如果你想要这样的野兽,你必须自己动手:
- 创建一个类
MyEnum
,其中包含一个 int(基本上) - 为每个有趣的值创建命名构造函数
您现在可以随意扩展您的类(添加命名构造函数)...
虽然这是一种解决方法,但我从未找到处理枚举的令人满意的方法......
关于c++ - 在 C++ 中扩展枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1804840/