0

我有一个类型的向量,它有两个函数,setSucceed() 和 setFailed()。调用 setFailed 会导致一些工作完成,然后对象被破坏。我需要迭代这个向量并根据外部条件为每个元素调用其中一个函数。这是我在这段代码中的初始通行证:

void F(bool success)
{
    for (vector<t>::iterator i = myVector.begin(); i != myVector.end(); ++i)
    {
        if (success)
        {
            (*i)->setSucceeded();
        }
        else
        {
            (*i)->setFailed();
        }
    }
    myVector.clear();
}

当成功 == true 时,这工作正常。但是,当它为假时,在第一次调用 setFailed 后,*i 被破坏,&i 变为 0xdddddddddddddddd(这是某种空指针吗?),所以当循环继续时(特别是在 ++i 处),我得到断言失败:“向量迭代器不可递增”。这是合理的,因为 i 是一个空指针,所以它不能递增。这就是我对正在发生的事情的理解。

对我的所有矢量元素调用 setFailed 的最佳方法是什么?我应该提一下,不幸的是,我不拥有类型 t 或 setSucceeded 和 setFailed 的定义。

4

0 回答 0