关于名字空间问题
在c++primer中,
namespace blip{
int bi=16,bj=15,bk=23;
}
int bj=0;
void manip(){
using blip::bi;
++bi;
using blip::bj;
++bj;//ok,使用了blip::bj
而在另一段代码中:
namespace blip{
int bi=16,bj=15,bk=23;
}
int bj=0;
void manip(){
using namespace blip;
++bj;//错误:二义性:全局bj还是blip::bj?????
这是怎么回事?
[解决办法]
using namespace blip,只是声明了名称空间blip;告诉编译器blip是名称空间,而代码中使用的using blip::bj明确的告诉编译器我要使用名称空间的BJ变量。
前一种声明当然会造成误会。