【发布时间】:2016-05-27 18:55:25
【问题描述】:
假设我有以下代码
namespace A {
int foo();
}
namespace B {
void foo();
}
using namespace A;
using namespace B;
int x = foo(); // error
我发现A::foo 真的很有用,但不是B::foo。我能做些什么来使A::foo 在随后对foo 的不合格引用中成为首选?例如。 using A::foo(实际上没有效果),或unusing B::foo。
【问题讨论】:
-
你有命名空间 A 和 B 并且你想要更喜欢 A::foo 然后你要做的是删除两个
using namespace语句,然后在你想要更喜欢 A::foo 的函数中使用using A::foo,然后调用foo()会导致A的foo函数 -
这不是一个好的答案——请参阅下面的 SergeyA 的答案——所以这是一个评论。您可以(并且应该)显式声明命名空间:
int x = A::foo();这完全消除了对using namespace的需要。
标签: c++ namespaces shadowing