【发布时间】:2019-06-19 13:39:55
【问题描述】:
我有一些标志定义如下,使用范围枚举:
enum class Capability : int
{
NoCapabilities = 0,
SomethingCool = 1,
UberCool = 1 << 1,
EvenCooler = 1 << 2,
};
Q_DECLARE_FLAGS( Capabilities, Capability )
现在,我正在尝试使用相等运算符:
Capabilities(DataCapability::NoCapabilities) == Capability::NoCapabilities
我不能在当前示例中使用testFlag,因为NoCapabilities = 0。如果枚举没有作用域(删除 class 关键字),则此方法有效。
显然,转换为 int (static_cast<int>(NoCapabilities)) 有效,但它真的很难看。
解决这个问题的方法是什么? 将零值设为 0 并对其进行测试是一种不好的做法吗?
【问题讨论】: