c++ - 在结构中使用枚举的值

标签 c++ mbed

我有以下类(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/

相关文章:

c++ - 评价顺序

c - 有可用的 mbed 以太网接口(interface)库吗?

c++ - 空表达式的计算结果是否为 NOP?

c++ - 虚拟方法是在运行时才创建的方法吗?

c++ - 如果配置中未使用字段,则修复警告 "field a is not used"的好方法

c++ - 类型别名允许分配任意指针,尽管 int* 是预期的

c++ - 让 Mbed Nucleo F401RE 与 LCD TFT HX8347 配合使用

c++ - 错误 : No instance of overloaded function "mbed::Ticker::attach" matches the argument list

c++ - 如何使用 mbed-os 中的可用库?

python - uTensor 模型输出不等于预期输出