无法在c ++中访问变量的全局版本

时间:2014-09-12 16:19:08

标签: c++ eclipse

我读到使用范围解析运算符允许访问当前块中本地变量的全局版本。

我尝试使用::访问全球版n1,但收到错误

  

符号' n1'无法解决"。

我正在使用带有CDT的eclipse kepler。

#include <iostream>
using namespace std;

int main() {
    int n1=100;
    {
        int n1=200;
        cout<<"n1= "<<n1;
        cout<<"::n1="<<::n1;
    }
    cout<<"n1= "<<n1<<'\n';
    return 0;
}

1 个答案:

答案 0 :(得分:3)

如果

::在任何函数之外的全局命名空间中,则可以使用它来访问它。

但它不是全球性的;它位于main函数体内。如果它在较窄的范围内被具有相同名称的内容隐藏,则无法访问它。唯一的解决方案是为其中一个变量选择不同的名称。