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 =((const Map、std :: basic_string> *)this)-> Map、std :: basic_string> :: pairList.std:の'operator='に一致しません:list <_Tp、_Alloc> :: begin with _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:注:候補は:std :: _ List_iterator 、std :: basic_string >>&std :: _ List_iterator、std :: basic_string >> :: operator =(const std :: _ List_iterator、std :: basic_string >>&)

4

1 に答える 1

0

メソッドは const なので、pairList.begin() は const_iterator を返します。

「typename multiPair::iterator pos;」を変更 「typename multiPair::const_iterator pos;」に

于 2012-05-12T08:10:00.893 に答える