c++ - 无法将类 push_back 到 for 循环内的对象 vector 中

标签 c++ for-loop vector

我无法调用将 push_back 返回到 vector 中的函数

void GameState::InitialiseBullet(float x, float y, float vx, float vy)
{
    Bullet* bullets = new Bullet();
    bullets->SetSize(5.f, 20.f);
    bullets->AddFrame("./images/bullet.png");
    bullets->Play();
    bullets->SetX(x);
    bullets->SetY(y);
    bullets->velocityX = vx;
    bullets->velocityY = vy;

    bullets->isActive = true;
    gameObjects.push_back(bullets);
}

当它在下面的for循环中

for (auto& object : gameObjects)
{
    //Determine the type at runtime
    if (dynamic_cast<Player*>(object) != 0)
    {
        //Process player-specific logic
        PlayerLogic(dynamic_cast<Player*>(object), a_fTimeStep);
    }

//Determine the type at runtime
if (dynamic_cast<Bullet*>(object) != 0)
{
    //Process bullet-specific logic
    BulletLogic(dynamic_cast<Bullet*>(object), a_fTimeStep);
}
if (dynamic_cast<Enemy*>(object) != 0)
{
    //Process enemy-specific logic
    Enemy* enemy = dynamic_cast<Enemy*>(object);
    EnemyLogic(enemy, lowerAliens);
    if (enemy->GetIsActive() == true)
    {
        allDead = false;
    }
}

//Update and draw our objects
object->Update(a_fTimeStep);
object->Draw();
}

调用函数的代码:

if (createBullet == true)
{
    InitialiseBullet(bulletX, bulletY, 0, 500);
    createBullet = false;
}

该代码在 for 循环之外时有效。但是,我需要 for 循环来提供对每个玩家、敌人和子弹对象的访问。有没有办法将 push_back 返回到基于同一 vector 的 for 循环内的 vector ?当它在循环内时,出现“表达式: vector 迭代器不兼容”错误。有任何想法吗? C++ 编程新手。

最佳答案

看起来你正在插入你正在迭代的同一个 vector ,这意味着你正在强制项目重新分配和迭代器失效;换句话说 - 您的数据移动到不同的位置并且使用的迭代器变得无效。


我很少看到您真正需要迭代和附加相同 vector 的情况,因此请再次查看您的代码。

如果您确实需要这样做,请以这种方式迭代:

for (size_t i = 0; i < gameObjects.size(); ++i)
{/*Some code*/}

同样使用此方法,您应该使用 gameObjects[i]. 而不是 it->

关于c++ - 无法将类 push_back 到 for 循环内的对象 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25117613/

相关文章:

c++ - 当我检测到 vector 变化时更改特定值

c++ - unordered_map : which one is faster find() or count()?

Python:多次调用 "for num in foo()"循环中的函数 foo()?

c++ - 在映射中搜索元组的一部分作为键

java - for循环未满足?

python - 使用 for 循环的函数,在达到特定数字之前对列表中的数字进行求和

带有类对象的 C++ vector push_back

c++ - 如何在c++中打印vector <vector <int >>?

c++ - Qt 5.1.1在vs2010编译报错

c++ - 类图数据结构和 C++ 实现