我可以在标头中将一个命名空间"import"到另一个命名空间中吗?
Can I "import" one namespace into another in the header?
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 *
Overload需要Foo::
命名空间预选赛。
我知道我可以拥有
using namespace Foo::Inner;
using namespace Bar::Inner;
int main ()
{
int i;
float f;
func (&i);
func (&f);
}
i do 不想要这个,我想在每种情况下参考Inner::func
。
我也不想将using namespace Foo
添加到包括Bar.h
在内的每个.cpp
文件(这是库重构工作的结果,将一些Bar
拉入Foo
中,许多.cpp
文件已经包括Bar.h
。
我将其非正式地视为"导入" Foo::Inner
中的Bar::Inner
,因此问题标题。我真正的意思是:
我可以在Bar.h
中添加一些东西,让我将Foo::Inner
中的过载添加到Inner::stuff
中,无论 using namespace Bar
有效吗?
您可以使用Bar::Inner
:
namespace Bar
{
namespace Inner
{
using Foo::Inner::func;
void func (float *);
}
}
这样,可以用Bar::Inner::func
。
使用
namespace Inner {
using namespace Foo::Inner;
using namespace Bar::Inner;
}
main
之前。请参阅此处的实时示例
写作
namespace Inner
{
using namespace Foo::Inner;
using namespace Bar::Inner;
}
main
上方就这样做。如果您只想引入特定符号,请写using Foo::Inner::func
&amp; c。
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 是否可以将函数导入命名空间,但不能导出它?
- C++ C++类中的命名空间降级
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 Clang++ 有没有办法将文件作为命名空间等包含?
- 我可以在标头中将一个命名空间"import"到另一个命名空间中吗?
- 比较C++中的#include和使用命名空间std与Python中的import
- 执行PyImport_ImportModule和import语句加载到不同的命名空间