从对象访问结构枚举

Access struct enum from object

本文关键字:枚举 结构 访问 对象      更新时间:2023-10-16

我只是在学习使用c ++,我正在尝试了解scope如何与类和嵌入式枚举一起工作。

目前我有一个看起来像这样的类:

class Foo {
public:
    Foo();
    enum Option = {
        FIRST,
        SECOND,
        THIRD
    };
    struct Example = {
        const char* name;
        Option key;
        enum keyOption = {
            PROPERTY,
            FLAG
        } keyValue;
    };
};

然后在我的主函数中初始化它,然后将一些值添加到Example结构

int main()
{
    Foo *test;
    Foo::Example content = {
        "Hello World",
        test->FIRST,
        test->Example::PROPERTY
    };
}

使用上面的代码,我将得到以下错误:

错误:"Foo::keyOption"不是"Foo"的基础

我知道我可以通过将test->Example::PROPERTY更改为Foo::Example::PROPERTY来修复它

但是有没有办法通过对象而不是Foo::来访问Example结构值?类似于我如何访问FIRST值?

原谅我是否在屠杀差异概念的命名,我只是想通过构建一些东西来自学,我需要尽快阅读更多细节。

非常感谢您的任何帮助,非常感谢!

Foo::FIRST 和 Foo::Example::P ROPERTY 是枚举器的可能值。只有 example::key 和 example::keyValue 是结构的成员,可以实例化并初始化为 Foo::FIRST 和 Foo::Example::P ROPERTY

应该有效

Foo::Example content = {
    "Hello World",
    test->FIRST,
    Foo::Example::PROPERTY
};