c++中怎样访问被if屏蔽的相同外部局部变量?例子如下:
void Test::test()
{
int x = 0;
if(true)
{
int x = 1;
//这里怎样访问被if屏蔽的外部相同局部变量x=0?
}
}
[解决办法]
#include <iostream>
using namespace std;
int x=-1;
void Test(){
int x=0;
if(true){
int x=1;
cout<<x<<endl;
cout<<*((&x)+1)<<endl;
cout<<::x<<endl;
}
}
int main(){
Test();
return 0;
}
1、就不能换个名字
2、如果访问的是全局的,那个加上::就好
3、如果还是要访问函数内部的,自己算算指针偏移也还好。但是有大端和小端的问题。
最靠谱的解决办法是换个名字。起名字很重要,如果别人的代码里有变量叫x,还没注释,我心里会杀了他的。
[解决办法]
使用hack的手法,根据运行环境的内存布局和x的地址找到上面的x的地址进行访问~~
比如 if(true)
{
int x = 1;
*(&x+1)可能是上面x的地址
}
[解决办法]
就不能换个名字?