以下のコードはコンパイルエラーを与えます
namespace X{
int i;
}
void f(){
int i;
using X::i; //compile error 'i’ is already declared in this scope
}
しかし、この行を名前空間 X を使用して置き換えると、正常にコンパイルされます。誰かが違いを理解するのを助けることができますか.
また、以下の変更されたコードでは、X::I の出力がすべての場所で 100 になることを期待していましたが、そうではありません。
名前空間の概念を誤解している可能性がありますか?
namespace X{
int i;
}
void f(){
int i=1;
cout << "local I " << i << endl; // prints 1 OK
using namespace X;
i=100;
cout << "X::i " << i << endl; // prints 100 OK.
cout << "X::i " << X::i << endl; // prints 10 why ?
}
main(){
using namespace X;
i=10;
f();
cout << "X::i " << i << endl; //prints 10 why ?
}
私がこれを理解するのを手伝ってくれてありがとう。