假设我在两个不同的命名空间中定义了方法:
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
void print()
{
//do work...
}
}
foo::print()
和 bar::print()
函数绝对 相等。我的项目使用了这些函数的大量调用。
有没有办法删除 print()
定义之一而不更改这些函数的调用?我的意思是这样的(当然,C++ 语言不允许这种构造,这只是一个例子):
namespace foo, bar //wrong code!
{
void print()
{
//do work...
}
}
如果无法按照我的意愿重构代码,请告诉我,你喜欢下面的决定吗?如果你的项目包含这样的代码,你会高兴吗? :)
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
void print()
{
foo::print();
}
}
添加:
谢谢你们,我对你们的回答非常满意。我希望您澄清一下:using::foo::print
和 using foo::print
之间有区别吗?
最佳答案
您可以通过 using
声明来实现这一点。
namespace foo
{
void print()
{
//do work...
}
}
namespace bar
{
using foo::print;
}
编辑
关于 ::foo::print
和 foo::print
之间的区别:在限定名称前加上::意味着您明确引用全局命名空间。这可以用来选择全局的,即使在范围内有另一个同名的项目。
关于c++ - 如何在不复制此代码的情况下将一些代码放入多个命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20836622/