我的枚举有点问题。
我想创建一个以枚举为参数的新对象。
A.H:
#ifndef A_H_
#define A_H_
class A {
enum myEnum { value1, value2};
};
A.cpp
#include "A.h"
//code
function() {
B* t = new B(myEnum::value1);
}
出现以下错误消息: “myEnum不是类或命名空间”
怎么了?对不起这个问题,但我是新手。
答案 0 :(得分:3)
您可以访问enum
A::value1
或者您可以使用enum class
之类的
enum class myEnum { value1, value2}
然后你将值范围定为
A::myEnum::value1
答案 1 :(得分:2)
value
的完全限定名称为:
A::myEnum::value1
但是,C ++(在C ++ 11之前)不允许使用enum
的名称(取决于编译器,它们可能会发出警告)。所以,在C ++ 11之前,你需要:
A::value1
但是,枚举(myEnum
)无法访问,因此您必须将其标记为public
。
在C ++ 11及更高版本中,您最好使用enum class
代替,必须完全限定访问。
答案 2 :(得分:0)
class A {
public:
enum myEnum { value1, value2};
};
如上所述添加公共访问说明符。 像
一样使用它A::myEnum::value1
尽管以下情况可行
A::value1