Oracle的Java代码倾向于使用常量整数标识符,其等价物是C ++中的枚举。使用CII的好处是你可以轻松地在基类或派生类中添加更多内容而不会破坏代码(太严重......)。我的问题是:有没有办法在C ++中使用枚举实现这一点,还是我必须坚持使用常量?
答案 0 :(得分:11)
假设您无法更改原始枚举声明,并且您绝对需要这样做,则可以使用静态转换。
enum ENUM_TYPE {
VALUE1,
VALUE2,
VALUE3
};
static const ENUM_TYPE VALUE4 = static_cast<ENUM_TYPE>(VALUE3 + 1);
答案 1 :(得分:0)
您可以在Java中执行此操作,因为它的字节码被解释(或者,最近可能是“即时”编译):您有单独的部分,并且它们在运行时放在一起。
C ++完全编译为本机代码。任何改变都需要完整的编译。如果完全重新编译是可以接受的,那么可以在枚举中添加新项,甚至比添加CII更不可能破坏代码。