gpt4 book ai didi

c++ - 对 C++ STL 列表有疑问

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:52 25 4
gpt4 key购买 nike

我有以下功能。

void BulletFactory::update(Uint32 ticks) {
std::list<Sprite*>::iterator it = activeBullets.begin();
while (it != activeBullets.end()) {
(*it)->update(ticks);
if(!((*it)->inView())) {
activeBullets.remove(*it);
Sprite* temp = *it;
it++;
inactiveBullets.push_back(temp);
} else {
it++;
}
}
}

当条件 !((*it)->inView())true 时,存在段错误。我看不到问题。

编辑:忘了说 activeBullets 和 inactiveBullets 是两个列表。

最佳答案

 activeBullets.remove(*it);
Sprite* temp = *it; //<--- problem
it++; //<-- problem

应该是:

  Sprite* temp = *it;
it = activeBullets.erase(it); //use erase
//it++; don't increment it

关于c++ - 对 C++ STL 列表有疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com