我遇到枚举类变量实例以下形式,它是没有编制在VS2012任何警告或错误:
UINT32 id;
enum class X {apple, pear, orange};
X myX = X(id);
此外,发送X(id)
作为参数传递给函数期待X型PARAM编译为好。 我不知道如果结果总是正确的,或者它只是一个奇怪的编译器行为。
然而,试图做X myX(id);
代替上述导致编译错误:
错误C2440:“初始化”:无法从“UINT32”到“X”转换。 转换到枚举类型需要显式转换(的static_cast,C样式转换或函数样式转换)。
读C ++ 11种标准并没有帮助我理解。 所以,我对这个问题的2个问题:
- 是否有可能构建具有整体类型作为参数枚举类对象?
- 如果1是真的,为什么
X myX(id)
不起作用?