对于未限定范围的枚举,答案是“大多数枚举”,因为隐式转换到底层的整数类型。但是,作用域枚举不具有此隐式转换。相反,为它们定义了一些而不是所有可用于非作用域枚举的运算符。std::cout << (Color::Red + Color::Green == Color::Green) << '\n';
// no match for 'op
Potato.spud>>> x is y>>> x.value is y.value这是不是意味着我们也应该通过身份来比较它们,就像PEP8建议的那样,我们应该总是使用is/is not,而不是“单件喜欢无”的相等运算符?到目前为止,我一直在使用相等运算符,并且没有注意到任何问题来证明PEP8警告的如此强烈的措辞。对枚举实
我试图使用一个testFlag命令测试是否设置了两个标志中的一个或两个,如下所示:error: no viable conversion from 'QFlags\<QIODevice::OpenMode::enum_type\>' (aka 'QFlags\<还值得注意的是,QIODevice::OpenMode类型是QFlag