У меня были некоторые проблемы при попытке реализовать перегруженную функцию оператора <<, которая может распечатать std :: list, который является членом одного из моих классов. Класс выглядит так: </p>
class NURBScurve {
vector<double> knotVector;
int curveOrder;
list<Point> points;
public:
/* some member functions */
friend ostream& operator<< (ostream& out, const NURBScurve& curve);
};
Ключевой переменной-членом, которая меня интересует, является список «Точек» - это еще один созданный мной класс, в котором хранятся координаты точки вместе с соответствующими функциями-членами. Когда я пытаюсь реализовать перегруженную функцию оператора << как: </p>
ostream& operator<<( ostream &out, const NURBScurve &curve)
{
out << "Control points: " << endl;
list<Point>::iterator it;
for (it = curve.points.begin(); it != curve.points.end(); it++)
out << *it;
out << endl;
return out;
}
У меня начинаются проблемы. В частности, я получаю следующую ошибку:
ошибка:
no match for ‘operator=’ in ‘it = curve->NURBScurve::points. std::list<_Tp, _Alloc>::begin [with _Tp = Point, _Alloc = std::allocator<Point>]()’
/usr/include/c++/4.2.1/bits/stl_list.h:113: note: candidates are: std::_List_iterator<Point>& std::_List_iterator<Point>::operator=(const std::_List_iterator<Point>&)
Я немного озадачен, но я думаю, что это как-то связано с итератором списка, который я использую. Я также не слишком уверен в нотации кривой.points.begin ().
Если кто-нибудь сможет пролить свет на эту проблему, я был бы признателен. Я нахожусь в точке, где я слишком долго смотрю на проблему!