c++ - 在 C++ 中扩展枚举?

标签 c++ enums

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/

相关文章:

c++ - 混合全局函数和类成员函数 C++

C++函数参数不会编译

java - 枚举是 Roguelike 游戏中生成生物的正确工具吗?

ruby-on-rails - 在 Rails 中使用 Postgres 枚举类型时,在迁移中指定 CREATE TYPE xyz_setting AS ENUM 会破坏您的 db/schema.rb 文件

c# - 是枚举到枚举拳击还是只是类型转换

c++ - 如何使用枚举初始化 vector/数组?

c++ - 需要释放 QList 内容?

C++:为什么 std::system ("exit 1") 返回 256?

java - 单例、枚举和匿名内部类

c++ - Boost.Spirit 的单元测试