gameObjects
- это std::map<sf::String,VisibleGameObject*>
, а results
- это std::map<sf::String,VisibleGameObject*>::iterator
. Когда это работает:
return gameObjects.erase(results);
Я ожидал, что деструктор VisibleGameObject запустится, а именно:
VisibleGameObject::~VisibleGameObject(){
m_pSceneManager->removeSprite(name);
}
никогда не запускается, пока класс, который содержит gameObjects
, не будет уничтожен, который затем запускается:
GameObjectManager::~GameObjectManager(){
std::for_each(gameObjects.begin(),gameObjects.end(),GameObjectDeallocator());
}
struct GameObjectDeallocator{
void operator()(const std::pair<sf::String,VisibleGameObject*>&p) const{
delete p.second;
}
};
тогда он работает. Почему не работает в первом случае?
Использование SFML 2.0
Спасибо