Mar*_*n B 173
命名空间别名是通过不同的较短名称引用长命名空间名称的便捷方式.
举个例子,假设你想在没有using namespace指令的情况下使用Boost的uBLAS中的数字向量.每次都说明完整的命名空间很麻烦:
boost::numeric::ublas::vector<double> v;
Run Code Online (Sandbox Code Playgroud)
相反,您可以定义一个别名boost::numeric::ublas- 比如说我们要将其缩写为ublas:
namespace ublas = boost::numeric::ublas;
ublas::vector<double> v;
Run Code Online (Sandbox Code Playgroud)
小智 7
很简单,#define不起作用.
namespace Mine { class MyClass { public: int i; }; }
namespace His = Mine;
namespace Yours { class Mine: public His::MyClass { void f() { i = 1; } }; }
Run Code Online (Sandbox Code Playgroud)
编译好.允许您解决命名空间/类名冲突.
namespace Nope { class Oops { public: int j; }; }
#define Hmm Nope
namespace Drat { class Nope: public Hmm::Oops { void f () { j = 1; } }; }
Run Code Online (Sandbox Code Playgroud)
在最后一行,"嗯:糟糕"是一个编译错误.预处理器将其更改为Nope :: Oops,但Nope已经是类名.