在一個鏈表中的指針,根據外部的參數定位到指針,而後刪除,我原先寫的是註釋掉的那部分,我經過迭代器刪除的那個指針在鏈表中的位置,而後經過迭代器刪除指針
那個指針指向的對象。但是卻忘了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; }傷心死了,個人寶貴的時間。