我有以下代码我正在重构:
namespace Foo
{
namespace Bar { ...classes... }
}
Bar现在正在进入一个新的顶级命名空间,但我想保持API兼容性:
namespace Pi { ...classes... } // refactored Foo::Bar
namespace Foo { namespace Bar = Pi; } // API compatibility
这不起作用,因为它将Foo :: Bar :: Class别名为Foo :: Pi :: Class,而不是Pi :: Class。有没有办法(缺少一个宏或类型的所有Pi级别)来实现我想要的目标?
答案 0 :(得分:2)
如果我理解正确,这应该做你需要的。这意味着Foo::Bar
中的任何查找都会在::Pi
中找到名称。
namespace Pi {}
namespace Foo { namespace Bar { using namespace Pi; } }
显然,这不会保留二进制兼容性。
答案 1 :(得分:1)
哎呀,你想要反过来说:
namespace Foo {
namespace Bar {
using namespace Pi;
}
}