J'ai eu quelques problèmes en essayant d'implémenter une fonction d'opérateur surchargée < < qui peut imprimer une liste std :: qui est membre d'une de mes classes . La classe ressemble à ceci:Surcharge de l'opérateur << pour imprimer une liste std ::
class NURBScurve {
vector<double> knotVector;
int curveOrder;
list<Point> points;
public:
/* some member functions */
friend ostream& operator<< (ostream& out, const NURBScurve& curve);
};
La variable clé de membre Je suis intéressé par la liste des « points » - ceci est une autre classe que j'ai créé qui stocke les coordonnées d'un point ainsi que des fonctions de membres associés. Lorsque je tente de mettre en œuvre la fonction surchargée < < de l'opérateur:
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;
}
je commence à avoir des problèmes. Plus précisément, je reçois l'erreur suivante: erreur:
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>&)
Je suis un peu perplexe, mais je crois qu'il a quelque chose à voir avec la liste iterator J'utilise. Je ne suis pas trop confiant avec la notation de curve.points.begin().
Si quelqu'un peut faire la lumière sur le problème, je l'apprécierais. Je suis au point où je regarde le problème depuis trop longtemps!
Vous pouvez donner ([assez imprimante] http://stackoverflow.com/questions/4850473/pretty-print-c-stl-containers) un essai :-) –