如何在c ++中访问父作用域的变量?

时间:2016-01-04 17:27:57

标签: c++ scope

让我们想象我有这样的代码:

#include <iostream>

int main()
{

    int a = 5;
    {
        int a = 12;
        std::cout << a;
    }

    return 0;
}

我想从外部范围开始a==5,但main::a肯定无法正常工作。有没有解决方法?

2 个答案:

答案 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;
  }
}