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

时间:2017-07-06 11:57:44

标签: c++ namespaces backwards-compatibility

这是后续行动:

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

我需要更改命名空间的名称,但希望保持向后兼容性。上面的解决方案表明我必须为每个函数做那里做的事情:

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

namespace OldNameSpaceName
{
        using NewNamespaceName::print;
        // 50 other using declarations
}

我的问题:有更简单的方法吗?

2 个答案:

答案 0 :(得分:6)

只需使用命名空间别名:

namespace OldNameSpaceName = NewNameSpaceName;

答案 1 :(得分:1)

你可以简单地做

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