class A{
public:
enum b{C,D};
};
int main()
{
A a;
a.b = A::C;
return 0;
}
我明白了
main.cpp:21:7: error: invalid use of ‘enum A::b’
a.b = A::C;
^
为什么?æ®æˆ‘了解,我的枚举b
是公开的,我å¯ä»¥ç®€å•åœ°å°†å…¶è®¾ç½®ä¸ºä»»ä½•å€¼
ç”案 0 :(得分:7)
enum b{C,D};
创建一个å为b
的枚举 type 。
如果è¦ä½¿ç”¨å˜é‡ï¼Œåˆ™éœ€è¦å•ç‹¬åˆ›å»ºå®ƒï¼š
enum b{C,D};
b var;
// ...
a.var = A::C;
ç”案 1 :(得分:4)
更改
enum b {C,D};
å°†b
定义为一ç§ç±»åž‹ï¼Œ
enum {C,D} b;
å°†b
声明为未命å枚举的实例。
ç”案 2 :(得分:1)
您的enum
实际上是公开的,您å¯ä»¥å°†instance
ä¸çš„enum
设置为A::C
或A::D
。但是,这行
enum b{C, D};
定义枚举,但ä¸å£°æ˜Žå…¶å®žä¾‹ã€‚å› æ¤ï¼Œ
a.b = A::C;
å°è¯•ä¸ºç±»åž‹ a.b
分é…一个枚举数。您å¯ä»¥é€šè¿‡ä»¥ä¸‹æ–¹å¼è§£å†³æ¤é—®é¢˜ï¼š
enum b{C,D} instance;
然åŽå†
a.instance = A::C;
ç”案 3 :(得分:1)
枚举是类型,而ä¸æ˜¯å˜é‡ã€‚您å¯ä»¥åˆ›å»ºä¸€ä¸ªä»¥æžšä¸¾ä¸ºç±»åž‹çš„å˜é‡ï¼Œä½†è¿™ä¸æ˜¯æ‚¨è¦åšçš„。请改用æ¤æ–¹æ³•ï¼ˆæˆ‘é‡å‘½åäº†ä¸€äº›ä¸œè¥¿ï¼Œå› ä¸ºè¿™æ ·å¯ä»¥ä½¿äº‹æƒ…æ›´åŠ æ¸…æ¥šï¼‰ï¼š
class A {
public:
enum Color { Red, Green };
Color color;
};
int main()
{
A a;
a.color = A::Red;
return 0;
}
或者æ£å¦‚@lubgræŒ‡å‡ºçš„é‚£æ ·ï¼š
class A {
public:
enum Color { Red, Green } color;
};
int main()
{
A a;
a.color = A::Red;
return 0;
}