2012-05-12 53 views
1

我收到了一個很長的錯誤消息。我環顧四周,這意味着我的迭代器與它正在迭代的列表不同,但它看起來與我一樣!使用相同類型的迭代器時,「操作符=不匹配」

template <typename T1, typename T2> 
class Map 
{ 
    public: 
     Map(); 
     bool contains_key(const T1& key) const; 
    private: 
     T1 key; 
     T2 value; 
     typedef list<Pair<T1, T2> > multiPair; 
     multiPair pairList; 
}; 

template<typename T1, typename T2> 
inline Map<T1, T2>::Map() { } 

template<typename T1, typename T2> 
bool Map<T1, T2>::contains_key(const T1& key) const 
{ 
    typename multiPair::iterator pos; 
    for(pos = pairList.begin(); pos != pairList.end(); pos++) //error 
     if(*pos.get_first() == key) 
      return true; 
    return false; 
} 

map1.h:83:31:錯誤:不對應的在「POS =((常量地圖,性病:: basic_string的> *)這一點) '運算符=' - >地圖上的std :: basic_string的> :: pairList.std :: list < _Tp,_Alloc> ::以_Tp = Pair開始,std :: basic_string>,_Alloc = std :: allocator,std :: basic_string >>,std :: list < _Tp,_Alloc > :: const_iterator = std :: _ List_const_iterator,std :: basic_string >>' /usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/bits/stl_list.h:114:5:note :候選是:std :: _ List_iterator,std :: basic_string >> & std :: _ List_iterator,std :: basic_string >>> :: operator =(const std :: _ List_iterator,std :: basic_string >> &)

回答

0

該方法是const的,因此pairList.begin()將返回一個const_iterator。

更改「typename multiPair :: iterator pos;」到「typename multiPair :: const_iterator pos;」

+0

謝謝;我不太瞭解const關鍵字,只是將它粘在那裏,因爲該方法有一個返回值。 – user1390757

相關問題