如何访问块内的局部变量,如果有一个块级变量在c++中具有相同的名称?


#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';
}