加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何访问嵌套在命名空间中的未命名命名空间变量?

发布时间:2020-12-16 07:21:50 所属栏目:百科 来源:网络整理
导读:此问题已在链接中进行了讨论 unnamed namespace within named namespace但没有提供关于如何访问嵌套在命名空间下的未命名命名空间变量的完美答案,以防两个变量相同 考虑本规范 namespace apple { namespace { int a=10; int b=10; } int a=20;}int main(){co
此问题已在链接中进行了讨论
unnamed namespace within named namespace但没有提供关于如何访问嵌套在命名空间下的未命名命名空间变量的完美答案,以防两个变量相同

考虑本规范

namespace apple {   
    namespace {
                 int a=10;
                 int b=10;
              }
   int a=20;
}


int main()
{
cout<<apple::b; //prints 10
cout<<apple::a; // prints 20
}

未命名的命名空间“变量a”始终是隐藏的.如何访问未命名的命名空间的“变量a”?

在命名空间中声明未命名的命名空间是否合法?

解决方法

unnamed namespace "variable a" is always hidden. How to access "variable a" of unnamed namespace?

看起来你根本无法限定封闭命名空间之外的未命名命名空间.

好吧,这是如何解决歧义:

namespace apple {   
    namespace {
        int a=10;
    }

    int getPrivateA() {
        return a;
    }

    int a=20;
}

int main() {
    cout<<apple::getPrivateA() << endl;
    cout<<apple::a << endl;
}

见Live Demo.

虽然我知道没有完全回答你的问题(除了将未命名的命名空间嵌套在另一个命名空间内是合法的).
我将不得不调查c++ standard specification与章节3.4和7.3的内容,以便给出一个明确的答案,为什么它不可能你想做什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读