读书人

关于名字空间有关问题

发布时间: 2012-02-22 19:36:55 作者: rapoo

关于名字空间问题
在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变量。
前一种声明当然会造成误会。

读书人网 >C++

热点推荐