枚举范围无法通过 C++ 中的类中的结构访问
Enum scope is not accessible through structure in Class in C++
我在访问和初始化枚举和结构时遇到了一个问题,如前所述 有一个头文件定义为sample.h
内容为
class MyClass{
enum M1 {
MY_VAL1 = 0,
MY_VAL2,
MY_VAL3
};
enum M2 {
MY_VA1 = 0,
MY_VA2,
MY_VA3
};
enum M3 {
MY_V1 = 0,
MY_V2,
MY_V3
};
struct val {
M1 obj1;
M2 obj2;
M3 obj3;
};
};
在我初始化或访问的sample.cpp
中
#include "sample.h"
MyClass mObj = { {MY_VAL1}, {MY_VA1}, {MY_V1} };
但总是抱怨"MY_VAL1
","MY_VA1
","MY_V1
"没有在范围内定义。
您的枚举类型不是公共的,并且您没有限定成员类型名称。 似乎您想要一些成员变量,而不是声明struct MyClass::val
:
class MyClass{
public:
enum M1 {
MY_VAL1 = 0,
MY_VAL2,
MY_VAL3
};
enum M2 {
MY_VA1 = 0,
MY_VA2,
MY_VA3
};
enum M3 {
MY_V1 = 0,
MY_V2,
MY_V3
};
M1 obj1;
M2 obj2;
M3 obj3;
};
static const MyClass foo = { MyClass::MY_VAL1, MyClass::MY_VA1, MyClass::MY_V1 };
所有这些枚举都不是在 main 的作用域中定义的,而是在类中定义的。 使用范围解析运算符(即::
(来解决这个问题。请注意,在您的情况下使用::
仍然存在问题,因为enums
是私有的。将它们更改为public
,以便::
正常工作。
...
main(){
...
int x = MyClass::MY_VA1;
...
}
我没有使用您的示例,因为它给出了其他错误......
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 访问存储在向量C++中的结构的多态成员
- 访问类lintalizer列表中的结构元素
- 仅使用结构名称访问结构成员
- 如何从其他结构访问受保护的结构变量
- 如何从类中定义的结构访问私有成员?c++
- 枚举范围无法通过 C++ 中的类中的结构访问
- 通过更高级别的结构访问子变量
- 从匿名结构访问枚举条目
- 如何定义别名以通过结构访问枚举类成员
- C 用于向量中的结构访问索引或使用参考值
- 奇怪的结构访问错误
- 将数组作为结构访问与未定义的行为
- 使用c++以及x86和x64体系结构访问处理器中断
- 使用 ostream 从另一个类的结构访问数据
- 从结构访问数组会使程序崩溃
- 联合中的C++结构访问联合成员
- SWIG如何使用Lua表从Lua中的c结构访问字节数组
- c++结构访问冲突