列表迭代器不可解除引用

时间:2012-06-12 17:56:07

标签: c++ list iterator

我一直在寻找与迭代器相同的问题;我找到了很多主题几乎相同的标题和类似的问题,但我的有点不同。

我正在尝试将*迭代器放在特定位置,但是我收到错误: “在运行时列出迭代器不可分离”,这是我的代码:

 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;
    }

1 个答案:

答案 0 :(得分:3)

如果pos等于miLista.size(),那么您将获得一个到列表末尾的迭代器,即调用miLista.end()时获得的迭代器。列表末尾的迭代器是 not dereferenceable