我在标题中的一个类中有枚举定义:
namespace A {
class B {
public:
enum Value {
VALUE1 = 1,
VALUE2 = 2,
};
};
}
我想在没有前缀的源文件中使用它的值,如下所示:
#include "header"
int main() {
someFn(VALUE1);
return 0;
}
我试过using A::B::Value;
但clang给出了一个错误:
using 声明不能引用类成员
即使我将枚举移到班级之外:
namespace A {
enum Value {
VALUE1 = 1,
VALUE2 = 2,
};
}
并且做using A::Value;
,错误消失了,但编译器抱怨VALUE1
:
使用未声明的标识符“VALUE1”
如果枚举是在其他地方定义的,有没有办法使用没有任何前缀的枚举值?- 使用#define
s 是不可能的。
如果没有办法,那么在 C++ 标准中实现这种行为可能会出现什么问题?