使用其他名称空间内的名称空间的函数
是否有任何方法可以省略*名称空间内其他名称空间的某些函数的外部名称空间名称?使用其他名称空间内的名称空间的函数
void sample_func();
namespace foo {
void first_func();
namespace bar {
void second_func();
void sample_func();
}
一切都是平凡的first_func()
:只是打字using foo::first_func;
允许调用它就像fist_func();
一切都很简单,如果我想打电话给second_func
没有任何前缀:只是using foo::bar::second_func;
允许称其为second_func();
但是有什么办法可以称之为bar::second_func();
?它会增加代码的可读性 - 更好地键入并看到类似bar::sample_func
而不是完整的foo::bar::sample_func
而没有名称混淆:显然using namespace foo::bar
不是这种情况下的选项。
UPD我没有兴趣在导入整个foo
或bar
命名空间(即using namespace ...
指令!我需要的只是一些功能,从他们。
您可以使用
namespace bar = foo::bar;
导入foo::bar
到当前名字空间刚刚bar
。
与namespace::
或者如果不是在一个命名空间,即
::
前缀它
::sample_func();
foo::first_func();
bar::second_func();
bar::sample_func();
您可以使用
using namespace foo;
在您希望使用的任何声明区域只需first_func()
和bar::sample_func()
。
例子:
int main()
{
using namespace foo;
first_func();
bar::sample_func();
}
不是最好的方法:foo可以非常大,我不想完全从它导入所有的名字,只是'foo :: bar'命名空间中的一些函数,但是我需要在'foo :: bar'中的名字和全局名称空间中的名称。 – avtomaton
它需要'使用命名空间...',我。即全局命名空间中的每个函数都应该以'::'作为前缀。我只需要'foo'和'bar'中的一些广泛使用的函数子集而不暴露所有的名称空间。 – avtomaton