Ada*_*tin 4 c++ enums static-cast c++11
我有一个键入的枚举
enum side : int {_white=0,
_yellow=1,
_green=2,
_blue=3,
_red=4,
_orange=5};
Run Code Online (Sandbox Code Playgroud)
但是,使用gcc-5,编译器说它在以下场景中不能使用static_cast:
side value
function(static_cast<int *>(&value))
Run Code Online (Sandbox Code Playgroud)
这是为什么?做static_cast<int>(value))不会引起任何错误.
指针类型转换不仅仅是类型转换.通过指针访问会使字节相同但以不同方式读取它们.这是不是一个枚举安全的,因为它可以为int的大小不同.
类型转换是安全的,因为它将枚举转换为int作为副本.原始枚举可以是单个字节或两个字节,但一旦复制到4或8个字节就无关紧要.
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |