我正在学习使用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
值类似?
请原谅我,如果我正在扼杀差异概念的命名,我只是想通过构建一些东西来教自己,我需要尽快阅读更多细节。
非常感谢您的帮助,非常感谢!
答案 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
};