我有以下类(class):
class MyClass
{
public:
enum myEnum
{
a = 0b0,
b = 0b1,
};
union myUnion
{
uint32_t all;
struct myStruct
{
uint32_t start : 0b1;
uint32_t enumValue : myEnum::a;
} bits;
};
...
};
我只是不确定如何在 struct
中使用 myEnum::a
的值。我尝试了多种引用该值的方法,但均无济于事。我将如何实现这一点?
这是错误:错误:名称后跟“::”必须是“MAX1300BEUG/MAX1300.h”中的类或命名空间名称,行:50,列:37
谢谢, 亚当
最佳答案
枚举没有作用域。因此,将范围解析运算符 ::
应用于 myEnum
是错误的。
枚举值在封闭的命名空间中声明,因此在与 myEnum
相同范围内的 myStruct
中,您可以使用非限定查找直接引用其值: a
, b
.
在MyClass
之外,可以用MyClass::a
解析。
附言a
的值为 0。不能命名零宽度位域。您尝试做的事情与您尝试通过这样做实现的目标之间存在某种脱节。
关于c++ - 在结构中使用枚举的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370938/