这是离开公司的人写的。我看不出有任何理由这样做,并且很好奇我是否遗漏了什么。
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/