我只是在学习使用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
};