Когда я закрываю мое приложение в определенном состоянии, этот код работает:карты/набор Стирание итератора из диапазона
void GameEndState::exit(){
delete m_pGameObjectManager;
delete m_pSceneManager;
}
После запуска деструктора m_pGameObjectManager, который является:
GameObjectManager::~GameObjectManager(){
std::for_each(gameObjects.begin(),gameObjects.end(),GameObjectDeallocator());
}
//gameObjects is a std::map<sf::String,VisibleGameObject*>
///////////////
struct GameObjectDeallocator{
void operator()(const std::pair<sf::String,VisibleGameObject*>&p) const{
delete p.second;
}
};
он будет производить ошибка заголовка. Я не нашел никаких результатов этой ошибки от googling. Я использую SFML 2.0.
VisibleGameObject в деструктор:
VisibleGameObject::~VisibleGameObject(){
m_pSceneManager->removeSprite(name);
}
void SceneManager::removeSprite(sf::String spritename){
std::cout << "removed " << std::string(spritename) << std::endl;
sprites.erase(sprites.find(spritename));
}
//sprites is a std::map<sf::String,sf::Sprite>
Заранее спасибо
Я не думаю, что ошибка возникает из фрагмента кода, который вы предоставили. Здесь я не вижу стирания карты. Что такое VisibleGameObject? Может быть, деструктор вызывает стирание? –
К сожалению, я должен был включить их. Редактирование – pighead10