2013-04-07 44 views
1

有,在命名空间中声明类long::name::space::name用头指令应该只影响该文件

而且我也想专注于全局命名空间中的一些模板,这个班的头文件,即

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

} 
... 

每次写命名空间的名字都非常烦人,所以我想使用某种使用指令,但将这个名称推送到全局命名空间不是个好主意吗?

是否有办法做一些事情来缩短输入时间,但是不能在全局命名空间中添加任何内容?

我知道有一个解决方案,但它是相当难看:

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

您确认'#define'很难看?或者你是否习惯于自动反冲,并在看到预处理器指令时使用“丑陋”一词? – 2013-04-07 23:26:52

+0

我相信它对我来说似乎并不美丽 – RiaD 2013-04-07 23:32:15

回答

1

你可以给命名空间的短别名(记住,long是C++中的关键字):

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

// ... 

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