2017-06-07 2 views
0

Betrachten Sie das folgende Programm:Zugriff auf Variablen in einem verschachtelten Block neu definiert

#include <iostream> 
using std::cout; 
int i = 10; 

int main() { 
    int i = 9; 
    { 
      int i = 8; 
      { 
       int i = 7; 
       cout << i << "\n"; // i = 7 
       cout << ::i << "\n"; // i = 10 (global i) 

       // How could we access to other i declarations here? 
      } 
    } 
    return 0; 
} 

i in dem verschachtelten Block referes zu den letzten Erklärungen von i zu verwenden, da diese die anderen Erklärungen verbergen. Um die globalen i (die Erklärungen außerhalb der Funktion main) zu verwenden, konnten wir ::i

verwenden würde ich gerne wissen, ob es einen Weg gibt, die anderen decalarations von i innerhalb des verschachtelten Block zu verwenden.

+1

Kurz gesagt: Es ist nicht möglich. Also tu es einfach nicht. –

+1

Es gibt keine Möglichkeit, andere Namen zu verwenden, wenn Sie auf die äußere Bereichsvariable zugreifen müssen – Slava

+3

Warum würden Sie Code wie diesen schreiben? –

Antwort

0

Deklarieren Sie einen neuen Variablennamen, etwa "j" anstelle von "i".

#include <iostream> 
using std::cout; 
int i = 10; 

int main() { 
    int i = 9; 
    { 
      int j = 8; 
      { 
       int j = 7; 
       cout << j << "\n"; // j = 7 
       cout << ::i << "\n"; // i = 10 (global i) 

       // How could we access to other 
     i declarations here? 
      } 
    } 
    return 0; 
    } 
Verwandte Themen