c++ - 为什么我不能分配错误的枚举元素,但可以与错误的枚举元素进行比较?

标签 c++ enums types type-safety

使用以下 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/

相关文章:

c++ - 将 const char* 转换为 wstring

java - eclipse 错误?仅使用默认情况打开 null

haskell -- 带有 TypeFamilies 扩展的 "where"语句中代码的奇怪的模棱两可的类型变量错误消息

scala - 如何用trait来描述算子?

c++ - Windows 上的 DLL 项目 : Unresolved External Symbol

c++ - char* 到 number 的值

c# - 从 ExecuteMethodCall() 获取枚举

java - 如何声明不同类型的HashMap?

c++ - 如何配置cppcheck以检测linux源代码中的内存泄漏

java - 是否可以从嵌套枚举中获取封闭实例?