2017-10-23 17 views
1
#include<iostream> 
int a; //1st a 
void f() 
{ 
    int a; //2nd a 

    { 
     int a; //3rd a 
// ::a refers to the global a here 
// simply a refers to the a inside this namespace 


//What should i do to access and modify 2nd a here in this namespace 

    } 

} 

グローバル名にアクセスするには:: aを使用する必要がありますが、アクセスしたい名前が関数内にあり、その関数で定義された名前空間の内側にある場合はどうすればよいですか?変数 'a'にアクセスするにはどうすればよいですか?

+1

なぜ複数のレベルで表示される同じ名前を使用していますか? C++では、変数名と型名に多くの文字を使用できます。コードを読みやすく保守しやすくするために、そしてスコープの問題のために愚かな間違いを避けるために、異なる名前を使用しないことはばかげている。 –

+0

@KenWhite私はこれを行うべきではないことを知っています。私はこれについて学びたいと思っていました。 – rimiro

+0

@rimiro第3宣言によって隠されているので、 'a'の第2宣言にアクセスすることはできません。 – user0042

答えて

0

2番目のaに内部スコープからアクセスする構文はありません。あなたは、例えば、事前に独自のエイリアスを作成する必要があります。:

void f() 
{ 
    int a; 
    { 
      int& outer_a = a; 
      int a; 
+0

あなたは2番目のステートメントを明確に述べることができますか? – rimiro

+0

@rimiro私はコード例を示しました –

-1

あなたは関数のスコープ内で第二aにのみアクセスすることができます。

関連する問題