【发布时间】:2019-02-21 13:36:32
【问题描述】:
我有以下课程:
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 的值。我尝试了多种引用该值的方法均无济于事。我将如何实现这一目标?
这是错误:Error: Name followed by "::" must be a class or namespace name in "MAX1300BEUG/MAX1300.h", Line: 50, Col: 37
谢谢, 亚当
【问题讨论】:
-
首先,在定义枚举时,你应该使用逗号而不是分号。其次,您的
myEnum::a为 0,这导致宽度开始为零。最后,您在 MyClass 定义之后缺少一个分号。 -
1) 如果出现编译错误,为什么不包含它?是秘密吗? 2)我得到的错误when running your example与无法引用
enum元素无关。为什么你认为是这样? -
@YiFei 关于分号,你当然是正确的——这只是我的代码和问题之间的错字。你的意思是我需要定义
myEnum::a的类型? -
我建议发布实际代码,或者至少发布您遇到的错误。您不需要定义类型,但位域
enumValue的宽度将为 0,这是 C++ 标准所不允许的。 -
@AlgirdasPreidžius 提供的错误消息和由于我写出问题而导致的语法错误已修复。