这里有一个代码片段来演示我的问题。C++使用枚举声明:如何导入所有的枚举项?
namespace N{
enum E { A, B, C, D };
}
int main(){
using N::E;
E e = A; // syntax error: 'A' is not declared
}
最后一行给我一个语法错误。我想在名称空间限定符N::
的主函数中使用名称N::A
,N::B
,N::C
和N::D
。但我不想要做以下两件事情
(1)我不想说using namespace N
,因为这会在N.进口一切
(2)我不对于枚举的每个成员,都不要说using N::A
,using N::B
等。因为那么如果我想修改枚举,我将不得不改变我的主要功能。更不用说额外的输入是繁琐和容易出错的。
我试着自己寻找答案,但不能。任何帮助表示赞赏。
现在很聪明! –
@aschelpler您的答案似乎是解决我的问题。我想知道'inline'关键字对命名空间的作用。我试图编译没有内联的代码,并且工作得很好。 – HazySmoke
没有'inline',你不能在没有使用指令的上下文中说'N :: E'或'N :: A'。我想你不想强迫大家使用它。 – aschepler