Bon j'ai réduit le code source petit à petit et je me suis rendu compte finalement que j'ai des problèmes avec la stl :
#0 ?? _M_lower_bound (this=<optimized out>, __k=..., __y=<optimized out>, __x=0x3f800000) (c:/mingw/lib/gcc/mingw32/4.8.1/include/c++/bits/stl_tree.h:1154)
#1 ?? find (__k=..., this=0x28fc58) (c:/mingw/lib/gcc/mingw32/4.8.1/include/c++/bits/stl_tree.h:1802)
#2 ?? find (__x=..., this=0x28fc58) (c:/mingw/lib/gcc/mingw32/4.8.1/include/c++/bits/stl_map.h:836)
#3 ?? sfgl::ResourceManager<sf::Texture>::getIdByAlias (this=this@entry=0x28fc40, alias=...) (C:/SFGL/include/SFGL/Core/../../../include/SFGL/Core/resourceManager.h:85)
#4 0040E918 sfgl::ResourceManager<sf::Texture>::getResourceByAlias(this=this@entry=0x28fc40, alias=...) (C:/SFGL/include/SFGL/Core/../../../include/SFGL/Core/resourceManager.h:119)
#5 00410848 render(this=0x28fbf4) (D:/Projets/Projets-c++/TestSFGL/myApplication.h:31)
#6 ?? exec (this=0x28fbf4) (D:/Projets/Projets-c++/TestSFGL/myApplication.h:77)
#7 ?? _fu49___ZNSs4_Rep20_S_empty_rep_storageE () (D:\Projets\Projets-c++\TestSFGL\main.cpp:12)
Voici la ligne de code qui fait tout crasher :
std::map<std::string, int>::const_iterator it = mAliasMap.find(alias);
Je n'avais jamais utiliser les const_iterator..., je vais essayer avec un itérateur simple pour voir...
Ok bon apparemment l'erreur vient d'ici :
template <typename R>
void Application::addResourceManager(ResourceManager<R>& rmi, std::string name) {
std::map<std::string, ResourceManager<void*>&>::iterator it = resourceManagers.find(name);
if (it != resourceManagers.end())
throw Erreur (11, "Resource manager already added!", 0);
resourceManagers.insert(std::pair<std::string, ResourceManager<void*>&>(name, rmi));
}
template <typename R>
ResourceManager<R>& Application::resourceManager(std::string name) {
typename std::map<std::string, ResourceManager<void*>&>::iterator it = resourceManagers.find(name);
if (it == resourceManagers.end())
throw Erreur (12, "Resource manager not found!", 0);
return static_cast<ResourceManager<R>&>(it->second);
}
La STL n'aime pas qu'on utilise un pointeur sur void (ou bien un template, alors là ça ne compile même pas), dans ses conteneurs.