несовместимый векторный итератор - PullRequest
1 голос
/ 08 июня 2011

Я получаю ошибку "несовместимый векторный итератор", поскольку я считаю, что это недопустимый итератор

void Bomb::CreateExplosion(Game_Manager* EGame_Manager)
{
for(irr::f32 iteration = 0; iteration < BlastRadius; iteration++) //up direction blast
{
   ***//PROGRAM CRASHES AT THIS LINE-->*** for(EGame_Manager->getEntityManager()->GetEntityIterator() = EGame_Manager->getEntityManager()->GetEntityList().begin(); EGame_Manager->getEntityManager()->GetEntityIterator() != EGame_Manager->getEntityManager()->GetEntityList().end(); ++EGame_Manager->getEntityManager()->GetEntityIterator())
    {
        if(CheckForCollision(UpExplosion->getTransformedBoundingBox(), (*EGame_Manager->getEntityManager()->GetEntityIterator())->GetEntityNode()->getTransformedBoundingBox()) == true)//check for collision against the unbreakable blocks (entity.type equals 0)
        {
            if((*EGame_Manager->getEntityManager()->GetEntityIterator())->GetType() == unbreakableblock)
            {
                break;
            }
            else if((*EGame_Manager->getEntityManager()->GetEntityIterator())->GetType() == gameplayer)
            {
                (*EGame_Manager->getEntityManager()->GetEntityIterator())->SetLives(this->GetLives() -1);
                break;
            }
            else if((*EGame_Manager->getEntityManager()->GetEntityIterator())->GetType() == gameitem)
            {
                break;
            }
        }
        else
        {
            UpExplosion->setScale(irr::core::vector3df(1,1,iteration)); //standard width of UpExplosion, iterated height of the UpExplosion
        }
    }
}

CreateExplosion вызывается Bomb :: UpdateEntity (), который вызывается EntityManager :: UpdateList (), который затем перебирает вектор <* Entity> List, вызывая соответствующую функцию обновления каждой сущности.

Эта функция добавляет сущности к вектору. Я не уверен, что это вызывает проблему

EntityManager::AddEntity(Entity* addtoList)
{
    List.push_back(addtolist);
    addtolist->GetEntityNode()->setID(List.size());
    EntityIterator = List.begin();
}

Также экземпляр класса Bomb, который вызывает эти функции, объявляется в классе Player, если это помогает с чем-либо.И я могу опубликовать больше кода, если это необходимо.

...