2011-02-10 78 views
1

我有一个项目运行在VC++ 2003 .Net上。但是我已经升级到VC++ 2008,然后编译成功。现在,我执行它&崩溃在以下代码: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; 
} 

这里所生成的错误是: 表达式:地图/设定迭代器不兼容。

plz帮助我。

阿布舍克

回答

8

你从m_LineComponents容器的迭代器:

itr = m_LineComponents.find(szDCode); 

你试试这个迭代器对一个迭代器从m_ECodes容器比较:

itr != m_ECodes.end() 

只能比较来自同一容器的两个迭代器。较新版本的Visual C++包含标准库中的检查,可帮助您查找此类错误。代码从未正确。