2017-11-28 1 views
0

私は様々なC++キーワードの機能を試してみるためにいくつかのおもちゃプログラムを書いています。私は下のように、可変iを定義する別の匿名の名前空間と名前空間(ネストとネストされた)の両方の下にネスト匿名の名前空間を宣言した:私は::iを使用して、トップレベルの名前空間の下で定義された変数iにアクセスすることができますネストされた匿名ネームスペースで定義された変数にアクセスするには?

namespace { 
    int i = 80; 
    namespace { 
     int i = 90; 
    } 
} 

が、ネストされた名前空間の下で定義された変数iにはどのようにアクセスできますか?

+1

*匿名の名前空間は暗黙のうちに*インライン展開されます*。これらの名前空間のスコープの外側では、*翻訳単位*内でこのような名前のうちの2つが表示されます* *あなたは*修飾された名前検索*なしで名前 'i'を使用することさえできません。残念ながら、内側の 'i'が属する名前空間のユニークな*名前*は分かりません。だから、できない。 – WhiZTiM

答えて

0

内部スコープの変数に一意の名前を付けると、匿名の名前空間の外側にアクセスできますが、名前の衝突が存在する限り、最も内側の名前空間からのみ名前でアクセスできます。他の方法でアクセスすることができます(例えば、最も内側の名前空間の参照を作成する、関数など)

+0

それは実行可能ではないという意味ですか? – cbinder

関連する問題