Questo:
Polygon::Polygon(const Polygon & polygon) {
for (vector<Point*>::iterator it = polygon._points.begin(); it != _points.end(); it++)
_points.push_back(*it);
}
mi dà un errore di
C2440 "initializing": cannot convert from "std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<Point *>>>" to "std::_Vector_iterator<std::_Vector_val<std::_Simple_types<Point *>>>
Mentre questo funziona:
Polygon::Polygon(const Polygon & polygon) {
vector<Point*> points = polygon._points;
for (vector<Point*>::iterator it = points.begin(); it != _points.end(); it++)
_points.push_back(*it);
}
risposte:
1 per risposta № 1Stai prendendo un const Polygon
come argomento. Nel primo caso, il tuo iteratore è quindi const. Nel secondo caso, si assegna il file polygon.vector const a un vettore locale non const, che consente di ottenere un iteratore non const.
Dai un'occhiata a ciò che sta facendo il tuo codice: stai prendendo un poligono che prometti di non modificare, e cercando di inserire punti in esso. Poiché quello è ciò che stai facendo, meglio lasciar cadere il const dall'argomento.