gpt4 book ai didi

C++11 将枚举转换为整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:42:51 26 4
gpt4 key购买 nike

我有一个类型枚举

enum side : int {_white=0,
_yellow=1,
_green=2,
_blue=3,
_red=4,
_orange=5};

但是,使用 gcc-5 时,编译器表示在以下情况下不能使用 static_cast:

side value
function(static_cast<int *>(&value))

这是为什么呢?做static_cast<int>(value))不会引发任何错误。

最佳答案

指针类型转换不同于类型转换。通过指针访问使字节保持不变,但读取方式不同。这对于枚举是安全的,因为它可以是不同大小的 int。

虽然类型转换是安全的,因为它将枚举转换为 int 作为拷贝。原始枚举可以是单个字节或两个字节,但一旦将其复制为 4 或 8 个字节,这就无关紧要了。

关于C++11 将枚举转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38295841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com