我读到使用范围解析运算符允许访问当前块中本地变量的全局版本。
我尝试使用::
访问全球版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;
}
答案 0 :(得分:3)
::
在任何函数之外的全局命名空间中,则可以使用它来访问它。
但它不是全球性的;它位于main
函数体内。如果它在较窄的范围内被具有相同名称的内容隐藏,则无法访问它。唯一的解决方案是为其中一个变量选择不同的名称。