我正在寻找一种解决以下问题的hacky解决方案:GCC 4.4+接受以下c ++ 0x代码:
enum class my_enum
{
value1,
value2
};
Run Code Online (Sandbox Code Playgroud)
允许使用这样的:
my_enum e = my_enum::value1;
Run Code Online (Sandbox Code Playgroud)
这带来了所有的钟声和口哨声.我想使这段代码与MSVC 2010兼容,即使用语法不会改变.我在此之前已经考虑过这个问题,并且接受的答案有效,但是枚举和枚举值的两个不同名称的需要正在破坏两种方法的兼容性.这使得它当然无法替换C++ 0x代码.我想知道是否有一些#undef和#define技巧可以解决这个问题,允许我使用 enum class类似语法(可能没有严格的类型安全性等),但至少是相同的语法.谢谢!
我正在使用c ++创建枚举,以使用二进制标志创建有限状态机.看起来像:
enum VStates
{
NEUTRAL = 0x00000000, // 000000
// Physical Status
DRY = 0x00000001, // 000001
WET = 0x00000002, // 000010
HOT = 0x00000004, // 000100
COLD = 0x00000008, // 001000
BURNED = 0x00000016, // etc..
FROZEN = 0x00000032,
EROS = 0x00000064, //
THANATOS = 0x00000128, //
SLEEP = 0x00000256,
STUNNED = 0x00000512,
PARALYZED = 0x00001024,
POISONED = 0x00002048, //
BLIND = 0x00004096,
SOFT = 0x00008192, // Flexible
TOUGH = 0x00016384, // Resistent
MAGNETIZED = 0x00032768,
POSSEDERUNT = …Run Code Online (Sandbox Code Playgroud) 对于一个从未写过一行C++ 11,并且目前没有机会用C++ 11编程的人,你能用一个简短的段落告诉我:
什么是"枚举类",为什么我们需要它?