gpt4 book ai didi

c++ - 为什么将单个枚举封装在一个结构中?

转载 作者:可可西里 更新时间:2023-11-01 18:20:11 26 4
gpt4 key购买 nike

这是离开公司的人写的。我看不出有任何理由这样做,并且很好奇我是否遗漏了什么。

enum thing_type_e
{
OPTION_A = 0,
OPTION_B,
OPTION_C,
OPTION_D
};

struct thing_type_data_s
{
enum_type_e mVariable;
};

我认为他可能会在结构中添加更多内容,但在查看它的使用方式后,我不这么认为。

除非“他打算向结构中添加更多内容”,否则为什么要将单个枚举打包到结构中?有什么我没有想到的动机吗?

更新:

正如评论中所问,他以这种方式使用它:

void process_thing_type(thing_type_data_s* ParamVariable)
{
local_variable = ParamVariable->mVariable;
...
}

如果有任何不同,这最初是用 GCC 3.3.5 构建的。

最佳答案

可能是为了加强某种类型安全。旧式枚举可以隐式转换为整数类型,这并不总是可取的。除此之外,它们没有作用域。

C++11 添加了作用域枚举(或“类”枚举)来解决这两个问题。

这是一个例子:

void foo(int) {}

int main()
{
foo(OPTION_A); // OK
thing_type_data_s s = { OPTION_A };
foo(s); // Error
}

关于c++ - 为什么将单个枚举封装在一个结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21318722/

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