foo.h
namespace Foo
{
namespace Inner
{
void func (int *);
}
}
bar.h
#include <Foo.h>
namespace Bar
{
namespace Inner
{
void func (float *);
}
}
main.cpp
#include <Bar.h>
using namespace Bar;
int main ()
{
int i;
float f;
Inner::func (&i);
Inner::func (&f);
}
В main
перегрузка float *
для func
доступна без квалификатора пространства имен Bar::
, но для перегрузки int *
требуется спецификатор пространства имен Foo::
.
Я знаю, что мог бы иметь
using namespace Foo::Inner;
using namespace Bar::Inner;
int main ()
{
int i;
float f;
func (&i);
func (&f);
}
Я не хочу этого, я хочу сослаться на Inner::func
как таковое в каждом случае.
Я также не хочу добавлять using namespace Foo
к каждому .cpp
файлу, который включает в себя Bar.h
(это результат попытки рефакторинга библиотеки, вытаскивая часть Bar
в Foo
, многие .cpp
файлы уже включают Bar.h
).
Неформально я рассматриваю это как "импорт" Foo::Inner
в Bar::Inner
, отсюда и название вопроса. Что я на самом деле имею в виду:
Могу ли я добавить что-то в Bar.h
, что позволит мне ссылаться на перегрузки в Foo::Inner
как Inner::stuff
везде, где действует using namespace Bar
?