namespace Foo
{
namespace Inner
{
void func (int *);
}
}
#include <Foo.h>
namespace Bar
{
namespace Inner
{
void func (float *);
}
}
#include <Bar.h>
using namespace Bar;
int main ()
{
int i;
float f;
Inner::func (&i);
Inner::func (&f);
}
在main
中,float *
的{{1}}重载无需使用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
的{{1}}文件中(这是库重构工作的结果,将.cpp
中的一些删除了到Bar.h
中,许多Bar
文件已经包含Foo
)。
我非正式地将此视为“ .cpp
导入” Bar.h
,因此是问题标题。我真正的意思是:
是否可以在Foo::Inner
生效的地方向Bar::Inner
添加一些内容,以便让我将Bar.h
中的Foo::Inner
中的重载称为?
答案 0 :(得分:4)
您可以使用Bar::Inner
中放置
namespace Bar
{
namespace Inner
{
using Foo::Inner::func;
void func (float *);
}
}
这样,两个重载都可以用Bar::Inner::func
引用。
答案 1 :(得分:4)
答案 2 :(得分:2)
写作
namespace Inner
{
using namespace Foo::Inner;
using namespace Bar::Inner;
}
正好位于main
上方。如果您只想输入特定的符号,请输入using Foo::Inner::func
&c。