2011-02-10 48 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++包含標準庫中的檢查,可幫助您查找此類錯誤。代碼從未正確。