重命名命名空间
我一直在做C++很长一段时间,但我今天早上刚刚遇到了一个问题,我无法给出答案:“是否可以在C++中为命名空间创建别名?”重命名命名空间
让我举个例子。比方说,我有以下标题:
namespace old
{
class SomeClass {};
}
其中,原因不详必须成为:
namespace _new
{
namespace nested
{
class SomeClass {}; // SomeClass hasn't changed
}
}
现在,如果我有一个旧的代码库是指SomeClass
,我可以很快(和dirtily )加入“修复”的变化:
namespace old
{
typedef _new::nested::SomeClass SomeClass;
}
但是,有没有办法从_new::nested
进口一切我nto old
而不必typedef
明确每个类型?
类似于Python的东西import * from ...
。
谢谢。
using namespace new::nested;
或者,如果你真的想要一个真正的别名:
namespace on = one::nested;
第二个比第一个好得多......第一个不创建别名,而是从其他名称空间带来符号,并且可能以名称冲突或不需要的结果结束(如果函数过载在'nested'命名空间比当前命名空间中的重载更好匹配,它会突然改变它的选择) – 2011-05-24 10:44:36
@David:是的,但它似乎解决了OP似乎有问题。 :) – Xeo 2011-05-24 10:45:11
此:
namespace old = newns::nested;
似乎是你想要的。
'new'可能是名称空间名称的一个坏例子。 ;) – Xeo 2011-05-24 10:00:58