我正在尝试遵循三规则,但是这样做会导致 QVector 的插入功能出现问题。
添加复制构造函数和析构函数后,我的程序将产生一个错误,其中点向量不再可访问,因此复制构造函数无法重新分配点。
这是我的代码中的一些片段
QVector<QPointF> *mList = nullptr;
int area;
Shape::Shape()
{
mList = new QVector<QPointF>();
area = 0;
}
Shape::Shape(const Shape &obj)
{
mList = new QVector<QPointF>();
mList = *obj.mList;
area = obj.area;
}
Shape::~Shape()
{
delete mList;
}
现在,我使用使用 QVector 函数的 qSort 按面积对一组“形状”对象进行排序。
void T::sortByArea()
{
qSort(listOfShapes);
}
当此方法完成时。我发现其中一个形状现在有一个值为 的 mList <not accessible>
。仅当使用 QVector::insert(int i, const T &value) 时才会在排序中出现。
到目前为止,此形状列表已被编辑和操作,但这是迄今为止唯一一次无法访问形状列表。原因是什么,我应该如何解决这个问题?