这个:
Polygon::Polygon(const Polygon & polygon) {
for (vector<Point*>::iterator it = polygon._points.begin(); it != _points.end(); it++)
_points.push_back(*it);
}
给我一个错误
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 *>>>
虽然这有效:
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);
}
最佳答案
您将 const Polygon
作为参数。在第一种情况下,您的迭代器因此是 const。在第二种情况下,您将 const polygon.vector 分配给一个局部的非常量 vector ,这使得获得非常量迭代器成为可能。
看看您的代码实际上在做什么:您正在获取一个您保证不会修改的多边形,并尝试在其中插入点。既然这就是你正在做的,最好从参数中删除 const。
关于c++ - 奇怪的错误@Visual Studio C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33712515/