как получить доступ к переменной, когда глобальная и локальная переменные с одинаковыми именами уже присутствуют (c ++)? - PullRequest
0 голосов
/ 20 мая 2018

Вот код:

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

Я хочу знать, есть ли способ получить доступ к значению 2 в фигурных скобках внутри функции fun.Когда я пишу x, он печатает 3, а когда :: x печатает 1. Итак, как получить доступ к x со значением 2. и будем ли мы называть это глобальной или локальной переменной.

Спасибо

Редактировать 1: спрашивая только о знании, хотел знать, возможно ли такое или нет.

1 Ответ

0 голосов
/ 20 мая 2018

Я хочу знать, есть ли какой-нибудь способ доступа к значению x в скобках внутри функции fun.

Нет способа получить к нему доступ.Единственный «взломать» доступ к нему:

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

независимо от того, назовем ли мы его глобальной или локальной переменной.

Это локальная переменная.

Я рекомендую против этой практики, это вызывает путаницу.Чтобы избежать этого, используйте опцию компилятора, например, gcc -Wshadow, чтобы получить предупреждение для таких случаев, как это.

...