首页 > 解决方案 > C++ 命名空间约定

问题描述

我是 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();

标签: c++namespaces

解决方案


这是一个名称查找问题。

所以如果你读过这篇文章,你就会知道不合格查找合格查找之间的区别

所以很明显,不合格的查找在这里是有效的,但是如果你想做一些像消歧这样的工作,你可以使用合格的查找。因此,当不合格查找有效时,合格查找始终有效。(如果您可以使用合格查找)。


推荐阅读