C++ 有没有办法访问隐藏在另一个作用域中的局部变量的值?
我知道如果一个变量是全局变量,您可以通过在变量名前面加上C++ 有没有办法访问隐藏在另一个作用域中的局部变量的值?,c++,scope,C++,Scope,我知道如果一个变量是全局变量,您可以通过在变量名前面加上:…来访问它的值。。。但是有没有办法访问隐藏在另一个作用域中的局部变量的值 我在想这样的事情: void f() { int x = 1; { int x = 2; //access the value of the variable x (with the 1 in it) inside here } } 如果语言不支持这一点,那么我完全可以使用一些黑客解决方案。您可以将外部x的地
:
…来访问它的值。。。但是有没有办法访问隐藏在另一个作用域中的局部变量的值
我在想这样的事情:
void f() {
int x = 1;
{
int x = 2;
//access the value of the variable x (with the 1 in it) inside here
}
}
如果语言不支持这一点,那么我完全可以使用一些黑客解决方案。您可以将外部x的地址分配给指针对象,然后通过内部作用域中的指针引用它(假设没有另一个同名指针对象隐藏它)
或者,只要您正在编辑代码,就可以更改名称我不这么认为。除非阴影变量是全局变量、另一个命名空间中的变量或该类或其任何祖先或任何其他类的成员变量,否则它仍然不可访问 使用关键字可能会有一些特定于编译器的技巧,但我不相信它
顺便说一下,
(&x+1)
这称为阴影,您不能“取消阴影”外部
x
以引用它。Hacky解决方案是-Wshadow-Werror
。或者是一个引用而不是指针:int&outer\u x=x代码>紧跟在intx=2之前代码>。