如何在不复制此代码的情况下将多个函数放入多个命名空间?

How do I put several functions into multiple namespaces without duplicating this code?

本文关键字:函数 命名空间 情况下 复制 代码      更新时间:2023-10-16

这是对以下内容的跟进:

如何在不复制此代码的情况下将某些代码放入多个命名空间?

我需要更改命名空间的名称,但希望保持向后兼容性。上面的解决方案表明,我必须为每个函数执行该操作:

namespace NewNamespaceName
{
void print()
{
//do work...
}
// 50 other functions
}
namespace OldNameSpaceName
{
using NewNamespaceName::print;
// 50 other using declarations
}

我的问题:有没有更简单的方法可以做到这一点?

只需使用命名空间别名:

namespace OldNameSpaceName = NewNameSpaceName;

你可以简单地做

namespace NewNamespaceName
{
void print()
{
//do work...
}
// 50 other functions
}
namespace OldNameSpaceName
{
using namespace NewNamespaceName;
}

如果NewNamespaceName还有其他您想要包含的内容,但不希望它们在OldNamespaceName中,那么只需创建另一个私有命名空间并将其导入旧命名空间

namespace NewNamespaceName
{
namespace Private {
void print() { ... }
// 50 other functions
}
}
namespace OldNameSpaceName
{
using namespace NewNamespaceName::Private;
}

活生生的例子在这里 https://wandbox.org/permlink/taRPm1hAd2FHbAYo