我如何创建多个 class 对象,这些对象在循环后不会自行删除
How do i create multiple class objects that doesn't delete itself after a loop
我一直在尝试在循环中创建多个对象并将其存储在地图中,但它往往会在循环后被破坏,我理解这一点,但我想将这些对象存储在地图中以备将来使用使用.
经过一些调试后我发现地图只保存了 1 个对象而不是 5 个为什么会这样,我该如何改进它?
除非EnemySprite
或tmp
被定义为宏,EnemySprite tmp(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));
我一直在尝试在循环中创建多个对象并将其存储在地图中,但它往往会在循环后被破坏,我理解这一点,但我想将这些对象存储在地图中以备将来使用使用.
经过一些调试后我发现地图只保存了 1 个对象而不是 5 个为什么会这样,我该如何改进它?
除非EnemySprite
或tmp
被定义为宏,EnemySprite tmp(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));