我有一个在VC ++ 2003 .Net上运行良好的项目。但我已将其升级到VC ++ 2008然后成功编译。现在,我执行了它&它在以下代码中崩溃:
CString szDCode(_T("E007"), _T("****"));
map<CString, CString>::iterator itr;
itr = m_ECodes.find(szDCode);
if(itr != m_ECodes.end())
{
szDCode = (*itr).second;
itr = m_LineComponents.find(szDCode);
if(itr != m_ECodes.end()) // This line is creating Error, While I have 4-5 items in it.
szDCode = (*itr).second;
}
这里生成的错误是: 表达式:map / set iterators不兼容。
Plz帮帮我。
阿布舍克巴克
答案 0 :(得分:8)
您从m_LineComponents
容器中获取迭代器:
itr = m_LineComponents.find(szDCode);
您尝试将此迭代器与m_ECodes
容器中的迭代器进行比较:
itr != m_ECodes.end()
您只能比较同一容器中的两个迭代器。较新版本的Visual C ++包括标准库中的检查,可帮助您查找此类错误。代码永远不正确。