我在头文件中的类里定义了一个枚举:
当使用
如果没有办法,那么在C++标准中实现这种行为可能会出现什么问题?
namespace A {
class B {
public:
enum Value {
VALUE1 = 1,
VALUE2 = 2,
};
};
}
我希望在源文件中无需前缀地使用它的值,就像这样:
#include "header"
int main() {
someFn(VALUE1);
return 0;
}
我尝试使用A::B::Value;
,但是clang报错:
using声明不能引用类成员
即使我将枚举移动到类外:
namespace A {
enum Value {
VALUE1 = 1,
VALUE2 = 2,
};
}
当使用
using A::Value;
时,错误消失了,但编译器会抱怨 VALUE1
:
如果枚举在其他地方定义,有没有一种方法可以不使用任何前缀来使用枚举的值? - 使用使用未声明的标识符'VALUE1'
#define
是不可能的。如果没有办法,那么在C++标准中实现这种行为可能会出现什么问题?
使用未声明的标识符 'VALUE1'
。 - abyss.7using A::Value;
”,不要这样做。不要仅导入Value
名称。导入整个命名空间,并确保该命名空间仅用于该枚举。 - user743382