【发布时间】:2017-09-07 15:35:31
【问题描述】:
我正在尝试关注rule of three,但是这样做会导致 QVector 的插入功能出现问题。
添加复制构造函数和析构函数后,我的程序将产生一个点向量不再可访问的错误,因此复制构造函数无法重新分配点。
这是我的代码中的一些 sn-ps
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;
}
现在我使用 qSort 按面积对一组“形状”对象进行排序,qSort 使用 QVector 函数。
void T::sortByArea()
{
qSort(listOfShapes);
}
当这个方法结束时。我发现其中一个形状现在有一个值为<not accessible> 的mList。只有在使用 QVector::insert(int i, const T &value) 时才会出现在排序中。
到目前为止,此形状列表已被编辑和操作,但这是迄今为止唯一一次无法访问形状列表。原因是什么?我应该如何解决这个问题?
【问题讨论】:
标签: c++ qt copy-constructor qvector rule-of-three