首选具有相同名称

时间:2016-05-27 18:55:26

标签: c++ namespaces shadowing

假设我有以下代码

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

1 个答案:

答案 0 :(得分:2)

拥有命名空间的重点是隔离名称。通过using整个命名空间,你无视这个原因。

解决问题的方法是一劳永逸地停止using namespace,永远不要回到这种可悲的策略。