我一直在尝试在一个循环中创建多个对象并将其存储在一个地图中,但是在循环之后它往往会被破坏,我理解这一点,但是我想将这些对象存储在一个地图中以备将来使用。
经过一些调试后,我发现地图只保存了1个对象,而不是5个,为什么会这样?我该如何改进呢?
除非EnemySprite
或tmp
被定义为宏,否则EnemySpriteTMP(x,y,40,40);
是一个局部变量,它将在作用域末尾(本例中为一次迭代的末尾)被销毁。
为了避免删除,您应该动态分配内存。
EnemySprite* tmp = new EnemySprite(x,y,40,40);
SDL_Texture* tmpTex = tmp->set_image(".../enemy.png",renderer);
map.insert(std::pair<EnemySprite*, SDL_Texture*>(tmp, tmpTex));