用C++重命名一个类

gt6*_*89b 7 c++ namespaces using rename reference

我有一个类,我想在我的头文件中引用它,它位于一长串嵌套命名空间中:MySpaceA::MySpaceB::MySpaceC::MySpaceD::MyVeryLongNamedClass.我想以不同的名称使用它,但不是MyVeryLongNamedClass- 更短更有用的东西,比如MyClass.

我可以放入using MySpaceA::MySpaceB::MySpaceC::MySpaceD我的标题,但我不想导入整个命名空间.我宁愿有某种结构

using MyClass = MySpaceA::MySpaceB::MySpaceC::MySpaceD::MyVeryLongNamedClass

我知道这可以使用名称空间,但我似乎无法使用它来使用类.

非常感谢您的帮助.

Jos*_*ley 16

typedef MySpaceA::MySpaceB::MySpaceC::MySpaceD::MyVeryLongNamedClass MyClass;
Run Code Online (Sandbox Code Playgroud)

对于模板,您可以使用模板typedef:

template <typename T>
struct MyClass {
  typedef MySpaceA::MySpaceB::MySpaceC::MySpaceD::MyVeryLongNamedClass<T> type;
};
Run Code Online (Sandbox Code Playgroud)

现在你可以参考MyClass<T>::type而不是MySpaceA::MySpaceB::MySpaceC::MySpaceD::MyVeryLongNamedClass<T>.