【问题标题】:How to access the variable defined under nested anonymous namespace?如何访问嵌套匿名命名空间下定义的变量?
【发布时间】:2017-11-28 15:07:43
【问题描述】:

我正在编写一些玩具程序来尝试各种 C++ 关键字的功能。我已经声明了一个嵌套在另一个匿名命名空间下的匿名命名空间,并且两个命名空间(嵌套和嵌套)都定义了一个变量 i,如下所示:

namespace {
    int i = 80;
    namespace {
        int i = 90;
    }
}

我可以使用::i访问顶级命名空间下定义的变量i,但是如何访问嵌套命名空间下定义的变量i?

【问题讨论】:

  • 匿名命名空间(通常)隐含地是 inlined。在这些命名空间范围之外,您将在 翻译单元 中看到两个这样的名称 i - 如果没有 限定名称,您甚至无法使用名称 i -查找。不幸的是,您不知道内部 i 所属的命名空间的唯一 name。所以,你不能。

标签: c++ namespaces


【解决方案1】:

如果你给内部范围内的变量一个唯一的名称,你可以在匿名命名空间之外访问它,但只要存在名称冲突,你就只能从最里面的命名空间通过名称访问它。您可以通过其他方式访问它(例如,在最里面的命名空间中创建一个引用,或者一个函数)

【讨论】:

  • 你的意思是不可行?
猜你喜欢
  • 2018-02-03
  • 2017-01-24
  • 2020-07-10
  • 2021-12-28
  • 1970-01-01
  • 2015-01-08
  • 2016-04-08
  • 1970-01-01
  • 2014-04-22
相关资源
最近更新 更多