我是 C++ 新手。
我有一个包含以下内容的文件:
namespace A {
namespace B {
function foo() {
}
}
function bar() {
}
}
另一个文件有以下内容:
namespace A {
namespace C {
// Call foo() and bar() here.
}
}
如果我想在命名空间 C 中调用 foo 和 bar,我应该包括它们的绝对命名空间吗?
A::B::foo();
A::bar();
或者我不必包含命名空间 A,因为它们都在 A 中?
B::foo();
bar();
最佳答案
这是一个 name lookup 问题。
所以如果你读过这篇文章,你就会知道 Unqualified Lookup 和 Qualified Lookup 之间的区别
很明显,非限定查找在这里是有效的,但是如果你想做一些像消歧这样的工作,你可以使用限定查找。因此,当非限定查找有效时,限定查找始终有效。(如果您可以使用限定查找)。
关于C++ 命名空间约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50442109/