Как поместить несколько функций в несколько пространств имен, не дублируя этот код?

Это продолжение к:

Как поместить некоторый код в несколько пространств имен, не дублируя этот код?

Мне нужно изменить имя пространства имен, но хочу сохранить обратную совместимость. Приведенное выше решение предполагает, что мне придется делать то, что там делается для каждой функции:

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

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

Мой вопрос: есть ли более простой способ сделать это?

3

Решение

Вы можете просто сделать

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

1

Другие решения

Просто используйте псевдоним пространства имен:

namespace OldNameSpaceName = NewNameSpaceName;
6

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector