我有以下几点:
enum TestEnum { One=1, Two, Three };
int main()
{
char const* data = reinterpret_cast<char const*>(One);
TestEnum e = reinterpret_cast<TestEnum>(data);
}
Clang无法编译此代码:
main.cpp:11:18: error: reinterpret_cast from 'const char *' to 'TestEnum' is not allowed
TestEnum e = reinterpret_cast<TestEnum>(data);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
为什么reinterpret_cast
在这种情况下不起作用?我已尝试删除,const
但这并没有什么不同。我没有在C ++ 11规范中看到任何说明枚举特殊行为的内容。
从5.2.10 / 4:“可以将指针显式转换为足够大的整数类型以容纳它。” 枚举不是整数类型。
(第5段允许相反的方向:“可以将整数类型或枚举类型的值显式转换为指针。”)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句