从对象

时间:2017-03-22 04:12:42

标签: c++

我正在学习使用c ++,而我正试图了解范围如何与类和嵌入式枚举一起使用。

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

class Foo {
public:
    Foo();

    enum Option = {
        FIRST,
        SECOND,
        THIRD
    };

    struct Example = {
        const char* name;

        Option key;

        enum keyOption = {
            PROPERTY,
            FLAG
        } keyValue;
    };
};

然后在我的main函数中初始化它,然后向Example struct

添加一些值
int main()
{
    Foo *test;

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

使用上面的代码我会收到错误:

  

错误:' Foo :: keyOption'不是' Foo'

的基础

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

来解决此问题

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

请原谅我,如果我正在扼杀差异概念的命名,我只是想通过构建一些东西来教自己,我需要尽快阅读更多细节。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

这应该有效

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