下面的代码给出了编译错误
namespace X{
int i;
}
void f(){
int i;
using X::i; //compile error 'i’ is already declared in this scope
}
但是如果我用 using namespace 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 ?
}
感谢您帮助我理解这一点。