您的位置:首页 > 其它

一例奇怪的编译错误(VC6)

2006-08-01 17:26 239 查看
一例奇怪的编译错误(VC6)

VC6 编译下段代码会报错.
将出错行
if (mmm.end() == itr) // ERROR
改写为
if (itr == mmm.end()) // OK
就可通过.

(g++可以通过.)

#pragma warning(disable:4786)

#include <map>

typedef std::map<int, int> MYMAP;

int main(int argc, char* argv[])
...{


MYMAP mmm;


MYMAP::const_iterator itr = mmm.find(1234);


// if (mmm.end() == itr) ERROR!!! (VC6)


// if (itr == mmm.end()) OK


if (mmm.end() == itr)


return 123;


return 0;


}

粗略地分析是map.end()返回的是iterator类型,
而iterator::operator==(const_iterator)没有定义.

将map.end()强制为const_iterator也可以通过.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: