Visual Studio C++出现奇怪错误

Strange error @ Visual Studio C++

本文关键字:错误 Studio C++ Visual      更新时间:2023-10-16

this:

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.vvector分配到一个局部的非常量向量中,这样就可以获得一个非常量迭代器。

看看你的代码实际在做什么:你取了一个你承诺不会修改的多边形,并试图在其中插入点。既然这就是你正在做的,最好把const从参数中去掉。

相关文章: