首页 > 解决方案 > 名称查找失败 - c++ 命名空间

问题描述

您能否解释一下为什么在该代码中名称空间查找失败?

namespace B {
namespace C {
   int i;
}
}
namespace A {
namespace B {

void foo() {
    // why does not much A::B::C
    B::C::i = 3;   
}
}
}

是的,我知道 ::B::C::i 有效,因为我们指示全局命名空间,但我很好奇为什么当我们不在 B 之前使用 :: 时查找不会在 B::C 命名空间之外搜索。

提前致谢

标签: c++namespaces

解决方案


在名称空间内::A::B,不合格的查找查找B名称空间::A::B而不是找到名称空间::B。并且没有 name ,因此在 found::A::B::C中的合格查找失败。C::A::B


推荐阅读