当我在特定状态下关闭我的应用程序时,此代码运行:
void GameEndState::exit(){
delete m_pGameObjectManager;
delete m_pSceneManager;
}
Run Code Online (Sandbox Code Playgroud)
运行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;
}
};
Run Code Online (Sandbox Code Playgroud)
它会产生标题的错误.我没有从谷歌上找到任何这个错误的结果.我正在使用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>
Run Code Online (Sandbox Code Playgroud)
提前致谢
错误就在这一行,显然sprites.find没有找到你给它的名字并且正在返回sprites.end().
sprites.erase(sprites.find(spritename));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1839 次 |
| 最近记录: |