【问题标题】:Using directive in header that should affect only this file在应该只影响这个文件的头文件中使用指令
【发布时间】:2013-04-07 23:01:05
【问题描述】:

在命名空间long::name::space::name中有一个声明类的头文件

而且我还想在这些类的全局命名空间中专门化一些模板,即

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

}
...

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

有没有办法做一些事情来缩短打字时间,但不向全局命名空间添加任何东西?

我知道一种解决方案,但它很丑:

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

【问题讨论】:

  • 你确定#define很丑吗?或者您是否只是习惯于在看到预处理器指令时自动退缩并使用“丑陋”一词?
  • 我敢肯定它对我来说似乎并不美丽

标签: c++ namespaces header-files


【解决方案1】:

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

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

// ...

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

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多