如何将指针值强制转换为枚举
How to cast pointer value to enumeration?
>我有以下内容:
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 段允许相反的方向:"整型或枚举类型的值可以显式转换为指针。
相关文章:
- 错误:从"int"到枚举c++的转换无效
- 将作用域枚举转换为基础类型
- 枚举类的 C 样式强制转换到基础类型 char 的引用
- 用于 boost::p roperty_tree 的通用枚举转换器
- 在编译时将强类型枚举器转换为其基础类型?
- 将整数值转换为以枚举为基础的字符串
- 如何在没有映射的情况下在枚举和字符串之间进行转换?
- C++枚举类 std::size_t 隐式转换
- 安全地将枚举类从基础类型转换
- SWIG-将C++枚举转换为Python枚举
- 如果 int 是"not within the enums range",为什么将 int 转换为强类型枚举会编译?
- 如何编写模板以转换为基于整数/枚举的模板化类型
- 将指向类型化/大小的枚举的指针转换为指向基础类型的指针是否安全?
- C++枚举类:强制转换为不存在的条目
- 如何将C++代码中的枚举转换为 C
- 为什么这个枚举不转换为 int?
- 失败的证明转换字符串到枚举类
- 枚举类的重载强制转换运算符
- 返回强制转换枚举值C++的函数
- 转换枚举中整数的安全方法