enum class TestEnum : int
{
first,
second
};
int main()
{
int n = static_cast<int>(TestEnum::second); // error
return 0;
}
构建日志:
g++ -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -MMD -MP -MF"src/test.d" -MT"src/test.d" -o "src/test.o" "../src/test.cpp"
../src/test.cpp: In function ‘int main()’:
../src/test.cpp:20:20: error: cannot convert ‘TestEnum’ to ‘int’ in initialization
gcc版本4.6.3
如何将enum class
个实例转换为int
?
答案 0 :(得分:2)
您正尝试使用-std=c++0x
密钥编译代码。但强类型枚举enum class
是C ++ 11的一个特性,因此您最好使用较新的GCC编译器。 GCC 4.7或更高版本是合适的,它具有-std=c++11
命令行密钥:http://gcc.gnu.org/projects/cxx0x.html
此代码有效:http://ideone.com/4IQPUx
答案 1 :(得分:0)
将编译器升级到4.7并使用-std = c ++ 11或-std = gnu ++ 11而不是-std = c ++ 0x。 范围枚举仅适用于-std = c ++ 11或-std = gnu ++ 11