首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

std:cout<<std:endl与std:cout<<endl;该怎么解决

2013-07-11 
std::coutstd::endl与std::coutendl如果在声明函数的参数时使用了一个类,那么在查找匹配的函数名字时

std::cout<<std::endl与std::cout<<endl;
如果在声明函数的参数时使用了一个类,那么在查找匹配的函数名字时,编译器会在包含参数类型的名字空间中也进行查找。
那么根据这个规则
std::cout<<endl;应该是成立的,
但是在vs2012上却会编译错误
需要使用
std::cout<<std::endl;
才能过编译
求解
[解决办法]

引用:
如果在声明函数的参数时使用了一个类,那么在查找匹配的函数名字时,编译器会在包含参数类型的名字空间中也进行查找。
那么根据这个规则
std::cout<<endl;应该是成立的,
但是在vs2012上却会编译错误
需要使用
std::cout<<std::endl;
才能过编译
求解

endl是一个类,然后在此类中声明了operator<<友元,函数名称是operator<<,第一个实参使用了std,会使编译器除了查找全局域中的operator<<之外,还在std中查找operator<<,这才是ADL;但endl不过是operator<<的另一个实参,这与ADL就无关了。

热点排行
Bad Request.