QVECTOR插入功能后无法访问点
points not accessible after QVector insert function
我试图遵循三个规则,但是这样做是在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;
}
现在,我使用QSort按QSORT将一组"形状"对象分类,该对象使用QSort。
void T::sortByArea()
{
qSort(listOfShapes);
}
此方法完成时。我发现其中一种形状具有一个具有<not accessible>
值的MLIST。仅当使用qVector :: insert(int i,const t&amp; value)时才发生。
到目前为止,此形状列表已经进行了编辑和操纵,但这是到目前为止唯一无法访问形状列表的时间。原因是什么?我应该如何解决此问题?
据我所知,由于您在复制构造函数参数列表中使用 const
,因此QVector仅复制Quctector,而不会深入复制。这是因为QVector是一个隐式共享的容器。
删除const
应该可以工作,但是更好的解决方案可能是明确复制整个向量(例如使用memcopy
),而不仅仅是使用QVector的=
操作员。
相关文章:
- 插入数组时违反写访问冲突
- 在将第一个值插入链表时尝试访问 head 时出现分段错误
- 在访问/插入值时,增强股后导致分割错误
- 在C++中访问和插入地图的地图(嵌套地图)
- QVECTOR插入功能后无法访问点
- 正在使用C 中的插入后变量不确定行为访问数组的元素
- 在全局映射中插入元素时发生访问冲突
- 根据CIN类型插入空隙*?始终获取unsigned_char的访问异常
- 插入[n X n]矩阵类型的数据,并在运行时对其进行访问.将std::映射工作
- std::map - 无异常且无需插入的元素访问
- 取消引用刚刚插入的 std::map 值有时会导致访问冲突
- 如何访问QHeaderView::section插入插槽
- 使用 ADO 将原始文件数据插入访问表的 BLOB("OLE 对象")字段
- 首次插入静态 STL 集会导致引发未经处理的异常0xC0000005:引发访问冲突
- 将类插入数组会导致奇怪的访问错误
- 在全局映射中插入元素时发生访问冲突
- 递归函数插入二叉搜索树无法按根访问节点
- 内存访问冲突插入结构在树结构c++
- 列表如何知道要在哪里(有效地)插入,而又不能进行随机访问?
- 如何在不插入std::unordereded_map元素的情况下访问(检查)该元素