这段代码是段错误的,我真的不知道为什么。当我使用 gdb 时,它会在函数末尾(花括号)出现段错误。所以这并没有给我很多关于正在发生的事情的信息。这是代码,如果需要,我会提供额外的信息。
typedef std::list<Ground> l_Ground;
void Player::y_collisions(l_Ground grounds) {
for (l_Ground::const_iterator ent = grounds.begin(); ent != grounds.end(); ent++) {
if (getGlobalBounds().intersects(ent->getGlobalBounds())) {
in_air = false;
velocity -= gravity;
}
}
}
编辑:经过仔细检查,它可能在 for 循环的末尾出现了段错误。由于 for 循环的编写方式,这仍然没有任何意义。它不应该超出列表的末尾。
EDIT2:由于下面的答案,这将起作用。
typedef std::list<Ground> l_Ground;
void Player::y_collisions(const l_Ground& grounds) {
for (l_Ground::const_iterator ent = grounds.begin(); ent != grounds.end(); ent++) {
if (getGlobalBounds().intersects(ent->getGlobalBounds())) {
in_air = false;
velocity -= gravity;
}
}
}