我有一个类型的向量,它有两个函数,setSucceeed()和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被破坏,&amp; i变为0xddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd我得到一个断言失败:“向量迭代器不可递增”。这是合理的,因为我是一个空指针,所以它不能递增。无论如何,这是我对正在发生的事情的理解。
我在所有向量元素上调用setFailed的最佳方法是什么?我不应该提到,我不拥有类型t或setSucceeded和setFailed的定义。