2011-02-10 2 views
1

У меня хорошо работает проект на VC++ 2003 .Net. Но я обновил его до VC++ 2008, затем он скомпилирован успешно. Теперь я выполнил это & он выходит из строя в следующем коде:VC++ 2008 Ошибка Map/set iterator несовместима

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++ включают проверки в стандартной библиотеке, которые помогут вам найти такую ​​ошибку. Код никогда не был правильным.

Смежные вопросы