C++ 命名空间约定

标签 c++ namespaces

我是 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 LookupQualified Lookup 之间的区别

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

关于C++ 命名空间约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50442109/

相关文章:

c++ - IN6_SET_ADDR_UNSPECIFIED 未在此范围内声明

c++ - multimap 只显示两个第一个元素

c++ - 捕获类成员初始化的异常 "in-place"

c++ - Visual Studio C++ 2k15 - 指针地址出错

XSLT 创建没有 namespace 的内容

variables - 从文件中获取变量

c++ - 渲染大块时出现纹理锯齿问题 : OpenGL

javascript - 在 jQuery 插件的属性中未定义对对象方法的引用

R:在自写包中使用magrittr管道运算符

php - 在 PHP 中为 stdClass 对象设置命名空间