使用以下 C++ 定义:
enum EnumA {
EA_Element = 1
};
enum EnumB {
EB_Element = 10
};
下面的代码不会编译,只有这样才有意义:
EnumA variable;
variable = EB_Element; // won't compile
但是下面的代码编译通过了:
EnumA variable = EA_Element;
if( variable == EB_Element ) { //will compile
}
虽然它没有任何意义 - 比较不同的枚举,这样的代码很可能是错误的。
为什么这些看似相同的情况在 C++ 中的处理方式不同?
最佳答案
它会编译,因为“默认情况下,枚举被转换为整数以进行算术运算。” (来自:C++ 编程语言)
关于c++ - 为什么我不能分配错误的枚举元素,但可以与错误的枚举元素进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592500/