在一个链表中的指针,根据外部的参数定位到指针,而后删除,我原先写的是注释掉的那部分,我经过迭代器删除的那个指针在链表中的位置,而后经过迭代器删除指针
那个指针指向的对象。但是却忘了list.removeOne((*it))以后,链表变了,迭代器也就变了,因此会删除其余的对象,更严重的是越界,直接段错误。
code
bool ZigBeeNodeTreeWidget::removeNode(ushort devname, QList<QTreeWidgetItem *> &list)//去除一个树节点项 { QList<QTreeWidgetItem*>::iterator it; for (it = list.begin();it != list.end();++it) { if ((*it)->text(0) == QString::number(devname)) { delete *it; list.removeOne((*it)); // list.removeOne((*it)); 原来写的 // delete *it; return true; } // else { // return false; // } } return false; }伤心死了,个人宝贵的时间。