名称查找失败 - C++ 命名空间
Name look-up fails - c++ namespaces
您能解释一下为什么在该代码中名称空间查找失败吗?
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::C 命名空间之外搜索: : B之前
提前致谢
在命名空间 ::A::B
中,B
的非限定查找查找命名空间 ::A::B
而不是查找命名空间 ::B
。并且没有名称 ::A::B::C
,因此在找到的 ::A::B
中对 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::C 命名空间之外搜索: : B之前
提前致谢
在命名空间 ::A::B
中,B
的非限定查找查找命名空间 ::A::B
而不是查找命名空间 ::B
。并且没有名称 ::A::B::C
,因此在找到的 ::A::B
中对 C
的合格查找失败。