VC ++ 2008 Error Map / set итератор несовместим - PullRequest
1 голос
/ 10 февраля 2011

У меня есть проект, хорошо работающий на 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;
}

Здесь генерируется ошибка: Выражение: сопоставление и установка итераторов несовместимы.

Плзпомоги мне.

Абхишек

1 Ответ

8 голосов
/ 11 февраля 2011

Вы получаете итератор из контейнера m_LineComponents:

itr = m_LineComponents.find(szDCode); 

Вы пытаетесь сравнить этот итератор с контейнером m_ECodes:

itr != m_ECodes.end()

Вы можетесравнивайте только два итератора из одного контейнера.Более новые версии Visual C ++ включают проверки в стандартной библиотеке, которые помогают вам находить ошибки такого рода.Код никогда не был правильным.

...