我有一张地图宣称为
std::map<std::string, Texture*> textureMap;
Run Code Online (Sandbox Code Playgroud)
我用它来将纹理文件的路径与实际纹理配对,这样我就可以通过路径引用纹理,而不会为单个精灵加载相同的纹理.我不知道该怎么做才能正确销毁ResourceManager类(地图所在的)的析构函数中的纹理.
我想过使用像这样的迭代器的循环:
ResourceManager::~ResourceManager()
{
for(std::map<std::string, Texture*>::iterator itr = textureMap.begin(); itr != textureMap.end(); itr++)
{
delete (*itr);
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,它说删除预期指针.现在已经很晚了,所以我可能只是错过了一些明显的东西,但我想让它在睡前工作.所以我是关闭还是我完全朝着错误的方向?
我正在尝试编写一个CMakeFiles.txt(以前从未这样做过),我不确定用于C++ 11的编译器标志是什么.我使用GCC 4.8.2,标志是std = c ++ 0x,但我不知道如何处理其他编译器.我不认为他们都使用那个标志,我相信MinGW-TDM使用std = c ++ 11,确保编译器使用c ++ 11的正确方法是什么?