【问题标题】:VC++ 2008 Error Map/set iterator is incompatibleVC++ 2008 错误映射/设置迭代器不兼容
【发布时间】:2011-06-24 17:55:26
【问题描述】:

我有一个在 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 迭代器不兼容。

请帮帮我。

阿布舍克

【问题讨论】:

    标签: c++ visual-c++ stl iterator


    【解决方案1】:

    您从m_LineComponents 容器中获得一个迭代器:

    itr = m_LineComponents.find(szDCode); 
    

    您尝试将此迭代器与来自m_ECodes 容器的迭代器进行比较:

    itr != m_ECodes.end()
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 2011-08-11
      • 1970-01-01
      相关资源
      最近更新 更多