我在我的插件中使用qwt5使用qgis 2.8.1((版本32位)使用qwt6)。当我运行我的C ++程序时,它崩溃了这个错误:
此函数发生问题(在调试中运行):
//delete all the items attached to QwtPlot
const QwtPlotItemList &list = m_pPlot->itemList ();
qDeleteAll(list.begin(), list.end());
我将此函数替换为:
QwtPlotItemIterator it = list.begin();
while ( it != list.end() )
{
QwtPlotItem *item = *it;
++it; // increment before removing item from the list
item->attach(NULL);
delete item;
}
但在此说明中再次发生同样的崩溃:
delete item;
请你知道这个问题吗?
答案 0 :(得分:3)
所有附加绘图项的QwtPlotItemList。
在迭代这些列表时要小心,因为删除/分离项目会使迭代器无效。相反,您可以在删除列表中放置指向要删除的对象的指针,然后再遍历该列表。
强调我的。
答案 1 :(得分:-2)
将delete item
移到循环之外。现在您多次删除item
。