我有一个在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;
}
Run Code Online (Sandbox Code Playgroud)
这里生成的错误是: 表达式:map/set迭代器不兼容.
Plz帮助我.
阿布舍克
你从m_LineComponents容器中得到一个迭代器:
itr = m_LineComponents.find(szDCode);
Run Code Online (Sandbox Code Playgroud)
您尝试将此迭代器与m_ECodes容器中的迭代器进行比较:
itr != m_ECodes.end()
Run Code Online (Sandbox Code Playgroud)
您只能比较同一容器中的两个迭代器.较新版本的Visual C++包括标准库中的检查,可帮助您查找此类错误.代码永远不正确.
| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |