让我们想象我有这样的代码:
#include <iostream>
int main()
{
int a = 5;
{
int a = 12;
std::cout << a;
}
return 0;
}
我想从外部范围开始a==5
,但main::a
肯定无法正常工作。有没有解决方法?
答案 0 :(得分:4)
A(让我们说)解决方法:
int main()
{
int a = 5;
int *pa = &a;
{
int a = 12;
std::cout << (*pa);
}
return 0;
}
可替换地,
int main()
{
int a = 5;
int& ra = a;
{
int a = 12;
std::cout << ra;
}
return 0;
}
答案 1 :(得分:1)
另一种选择,它类似于ilya的答案,但没有污染父范围
int main() {
int a = 1;
{
int& outer_a = a;
int a = 2;
std::cout << outer_a;
}
}