Как создать несколько объектов класса, которые не удаляются после цикла - PullRequest
0 голосов
/ 09 июля 2020

Я пытался создать несколько объектов в al oop и сохранить их на карте, однако он имеет тенденцию разрушаться после l oop, что я понимаю, но я хочу сохранить эти объекты в карта для использования в будущем.

После некоторой отладки я обнаружил, что карта сохраняет только 1 объект вместо 5 почему это так и как я могу его улучшить?

Код, с которым я работаю

1 Ответ

0 голосов
/ 09 июля 2020

Если EnemySprite или tmp не определено как макрос, EnemySprite tmp(x,y,40,40); - это локальная переменная, которая будет уничтожена в конце области видимости (в этом случае в конце одной итерации).

To Избегайте удаления, вы должны динамически выделять память.

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));
...