gpt4 book ai didi

c++ - 奇怪的错误@Visual Studio C++

转载 作者:行者123 更新时间:2023-11-28 05:58:32 24 4
gpt4 key购买 nike

这个:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com