提问者:小点点

如何创建多个在循环后不删除自身的类对象


我一直在尝试在一个循环中创建多个对象并将其存储在一个地图中,但是在循环之后它往往会被破坏,我理解这一点,但是我想将这些对象存储在一个地图中以备将来使用。

经过一些调试后,我发现地图只保存了1个对象,而不是5个,为什么会这样?我该如何改进呢?


共1个答案

匿名用户

除非EnemySpritetmp被定义为宏,否则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));