在标头中使用应该仅影响此文件的指令

时间:2013-04-07 23:01:06

标签: c++ namespaces header-files

有一个头文件声明了名称空间long::name::space::name

中的类

我还希望在这个类的全局命名空间中专门化一些模板,即

template<typename T>
class GlobalClass<NSClass<T>> {

}
...

每次编写命名空间名称都很烦人,所以我想使用某种using指令,但将此名称推送到全局命名空间并不是一个好主意吗?

有没有办法做些什么来缩短输入,但不能向全局命名空间添加任何内容?

我知道一个解决方案,但它很难看:

#define NS long::name::space::name
//use NS here
#undef NS

1 个答案:

答案 0 :(得分:1)

您可以为名称空间提供短别名(请记住,long是C ++中的关键字):

namespace SN = longy::name::space::name;

// ...

SN::my_class obj; // Resolves into longy::name::space::name::my_class