当同名的全局和局部变量已经存在时如何访问变量(c ++)?

how to access a variable when a global and local variable of same name are already present(c++)?

代码如下:

#include <iostream>
using namespace std;
int x = 1;
void fun()
{
    int x = 2;
    {
       int x = 3;
       cout<<::x<<endl;
    }
}
int main()
{
    fun();
    return 0;
}

我想知道的是,有什么方法可以访问fun.函数中大括号中的值为2的x。当我写 x 时,它打印 3,当 ::x 时,它打印 1。那么如何使用值 2 访问 x。以及我们称它为全局变量还是局部变量。

谢谢

编辑一:求知欲,想知道这样的事情是否可能。

What I want to know is, is there any way to access the x with value 2 in the braces inside the function fun.

无法访问。访问它的唯一 ,hack'' 是:

int x;
{
    int &xOuter = x;
    int x;
    // use xOuter here to access x of outer scope
}

whether we call it a global variable or local variable.

这是一个局部变量。

我反对这种做法,它会引起混乱。为避免这种情况,请使用编译器选项,例如 gcc 的 -Wshadow 以获得针对此类情况的警告。