#include <iostream>
using namespace std;
int main() {
int a = 20; // want to access this variable
{
int a = 30;
cout << a << endl;
}
return 0;
}
如果有同名的块级变量,我想访问块内的局部变量
您不能访问内部作用域中隐藏的相同名称的块作用域名称。如果你想从外部块作用域访问
a
,那么你必须删除内部作用域中a
的声明。
从技术上讲,您可以使用任何形式的间接访问命名对象,例如使用引用:
int a = 20;
int& ref = a;
{
int a = 30;
std::cout << ref << '\n';
}
但是,我不推荐这个解决方案。相反,我建议为每个变量指定一个唯一的名称:
int meaningful_name = 20;
{
int clearly_a_different_variable = 30;
std::cout << meaningful_name << '\n';
}