如果c++中存在同名的块级变量,如何访问块内的局部变量? [重复]

问题描述 投票:0回答:1
#include <iostream>
using namespace std;


int main() {

    int a = 20;     // want to access this variable
    
    {
        int a = 30;
        
        cout << a << endl; 
    }

    return 0;
}

如果有同名的块级变量,我想访问块内的局部变量

c++ variables scope
1个回答
1
投票

您不能访问内部作用域中隐藏的相同名称的块作用域名称。如果你想从外部块作用域访问

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';
}
© www.soinside.com 2019 - 2024. All rights reserved.