Как поместить некоторый код в несколько пространств имен, не дублируя этот код?
Предположим, у меня есть метод, определенный в двух разных пространствах имен:
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
void print()
{
//do work...
}
}
foo::print()
иbar::print()
функцииабсолютно равны. Мой проект использует многочисленные вызовы этих функций.
Есть ли способ удалить один изprint()
определениябез изменения вызовов этих функций? Я имею в виду что-то вроде следующего (конечно, язык C ++ не позволяет эту конструкцию,это просто пример):
namespace foo, bar //wrong code!
{
void print()
{
//do work...
}
}
Если нет способа реорганизовать код так, как я хочу, скажите, пожалуйста, вам нравится следующее решение? Будете ли вы рады, еслитвой проект содержит такой код? :)
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
void print()
{
foo::print();
}
}
ДОБАВЛЯТЬ:
Спасибо, ребята, я полностью удовлетворен вашими ответами. Только один момент, я хочу, чтобы вы уточнить: есть ли разница междуusing ::foo::print
а такжеusing foo::print
?