我有一个像这样声明的指针列表:
std::list < GameObj* > gameObjList;
该列表应包含指向我游戏中当前所有对象的指针。
然而,在我的主循环中,我有这个:
///Game logic
for (GameObj* o : gameObjList) {
(*o).step();
}
通过在战略位置添加std :: cout函数,我意识到循环每步执行一次,这是可以的,因为我只创建了一个这样的GameObj并添加到列表中。然而,显然没有达到step()函数中的std :: cout。
这是PlayerObj的step()函数:
void step() {
std::cout << " a ";
int _x = 0, _y = 0;
_x += keys[SDL_SCANCODE_D];
_x -= keys[SDL_SCANCODE_A];
_y += keys[SDL_SCANCODE_S];
_y -= keys[SDL_SCANCODE_W];
if (_x == 0 && _y == 0)
setSpeed(0);
else setSpeed(1);
setDir(atan2(_y, _x));
GameObj::step();
}
最后一个语句GameObj :: step()调用PlayerObj的父类GameObj的步进函数。