Я пытаюсь перебрать карту, определенную следующим образом:
std::map< size_type, std::pair<size_t, unsigned int> > ridx_;
Теперь я пытаюсь перебрать ridx_ (который является закрытым членом класса) в следующей функции другакоторый перегружает оператор << </p>
std::ostream& operator<<(std::ostream &os, const SMatrix &m)
{
std::map< size_type, std::pair<size_t, unsigned int> >::iterator it;
//The following is line 34
for (it = m.ridx_.begin(); it != m.ridx_.end(); it++)
os << it->first << endl;
return os;
}
Однако ошибки g ++ выводятся с:
SMatrix.cpp: 34: ошибка: нет совпадения с оператором = in в it = m-> SMatrix :: ridx_.std :: map <_Key, _Tp, _Compare, _Alloc> :: начинаться с _Key = unsigned int, _Tp = std :: pair, _Compare = std :: less, _Alloc = std :: allocator>>'/usr/include/c++/4.3/bits/stl_tree.h:152: примечание: кандидатами являются: std :: _ Rb_tree_iterator>> & std :: _ Rb_tree_iterator>> :: operator = (const std :: _ Rb_tree_iterator>> &)make: * [myTest] Ошибка 1
Что я делаю не так?