我已经做了很长时间的C++但是我今天早上遇到了一个问题,我无法给出答案:"是否可以在C++中为命名空间创建别名?"
让我举个例子.假设我有以下标题:
namespace old
{
class SomeClass {};
}
Run Code Online (Sandbox Code Playgroud)
其中,由于未指明的原因,必须成为:
namespace _new
{
namespace nested
{
class SomeClass {}; // SomeClass hasn't changed
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我有一个旧的代码库引用SomeClass,我可以通过添加以下内容快速(并且肮脏地)"修复"更改:
namespace old
{
typedef _new::nested::SomeClass SomeClass;
}
Run Code Online (Sandbox Code Playgroud)
但是,有没有办法进口一切从_new::nested进入old,而不必typedef明确地定义每一种类型?
与Python类似的东西import * from ....
谢谢.
假设我有一个非常长的命名空间,我不想一直输入.但我也不想使用它们using namespace ....我可以使用#define吗?
例:
#define glm::quat glm::gtc::quaternion
class Camera
{
protected:
glm::quat m_mRotation;
};
Run Code Online (Sandbox Code Playgroud)
我不想使用这个,因为glm :: part也会消失.所以我想保留glm部分,但不是完全长的gtc :: quaternion部分.当我现在尝试这个时,我收到以下错误:
错误1错误C2008:':':宏定义中出现意外