我一直在尋找與迭代器相同的問題;我發現了很多題目幾乎相同的話題,以及類似的問題,但我的觀點有點不同。列表迭代器不可取消
我試圖獲得在特定位置的*迭代器,但我得到的錯誤: 「列表迭代器不deferencable」在運行時,這裏是我的代碼:
CompetidorFormula2000* retornarCompetidorF2000(int pos){
list<Competidor*>::iterator itr=miLista.begin();
CompetidorFormula2000* f1=new CompetidorFormula2000();
if(pos>0 && pos<=miLista.size()){
advance(itr,pos);
}
f1=(CompetidorFormula2000*) (*itr);
return f1;
delete f1;
}
Erm,與您描述的問題無關,但是在return之後的任何內容都沒有執行,所以'f1'指向的對象永遠不會被釋放,只會泄漏。 –
與該錯誤消息不相關,但爲什麼要分配一個新對象,然後重新分配其他內容給該指針(泄漏內存)。此外,返回後的代碼將不會被調用,所以刪除將不會執行任何操作(但是如果確實如此,那將會很糟糕)。 – crashmstr