【发布时间】:2012-10-09 01:54:13
【问题描述】:
我遇到过以下形式的枚举类变量实例化,它在 VS2012 下编译时没有任何警告或错误:
UINT32 id;
enum class X {apple, pear, orange};
X myX = X(id);
此外,将X(id) 作为参数发送给期望编译的X 类型参数的函数。
我不确定结果是始终正确还是只是一种奇怪的编译器行为。
但是,尝试使用 X myX(id); 而不是上面的会导致编译错误:
错误 C2440:“正在初始化”:无法从“UINT32”转换为“X”。 转换为枚举类型需要显式转换(static_cast、C 样式转换或函数样式转换)。
阅读 C++11 标准并没有帮助我理解。 所以我有两个关于这个问题的问题:
- 是否可以构造一个以整型为参数的枚举类对象?
- 如果 1 为真,为什么
X myX(id)不起作用?
【问题讨论】:
标签: c++ c++11 visual-studio-2012 construction enum-class