【发布时间】:2022-01-07 17:57:57
【问题描述】:
我有这个:
enum class Categories : uint32_t {
C6 = 0x00000020,
C7 = 0x00000040,
C8 = 0x00000080,
...
};
我选择了一个枚举类,因为它非常适合范围界定。但缺点是,当我需要将类别用作按位运算的掩码位时,我需要先将它们转换为 uint32_t。
例子:
uint32_t masterCat = ((uint32_t)MyClass::Categories::C6) | ((uint32_t)MyClass::Categories::C7);
有没有一种方法可以获得相同的作用域优势,而不必在每次使用之前进行转换?如果我使用常规枚举,那么我会失去作用域优势:(
例子:
uint32_t masterCat = (MyClass::Categories::C6) | (MyClass::Categories::C7);
【问题讨论】: