假设我在两个不同的命名空间中定义了该方法:
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
void print()
{
//do work...
}
}
The foo::print()
和bar::print()
函数是绝对地平等的。我的项目使用了这些函数的大量调用。
有没有办法删除其中一个print()
定义不改变这些函数的调用?我的意思是类似下面的东西(当然,C++语言不允许这种构造,这只是一个例子):
namespace foo, bar //wrong code!
{
void print()
{
//do work...
}
}
如果无法按照我想要的方式重构代码,请告诉我,您喜欢以下决定吗?如果你会高兴吗your项目中有这样的代码吗? :)
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
void print()
{
foo::print();
}
}
ADD:
谢谢你们,我对你们的回答非常满意。我想让你澄清一下:两者之间有区别吗?using ::foo::print
and using foo::print
?
您可以通过以下方式实现此目的using
宣言。
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
using foo::print;
}
EDIT
关于之间的区别::foo::print
and foo::print
: 在限定名称前面添加 :: 意味着您显式引用全局命名空间中的名称。这可用于选择全局项目,即使范围内更接近的另一个同名项目也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)