小编Mik*_*ike的帖子

正确销毁std :: map中的指针

我有一张地图宣称为

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)

但这不起作用,它说删除预期指针.现在已经很晚了,所以我可能只是错过了一些明显的东西,但我想让它在睡前工作.所以我是关闭还是我完全朝着错误的方向?

c++ pointers destructor stl

28
推荐指数
2
解决办法
4万
查看次数

C++ 11的编译器标志

我正在尝试编写一个CMakeFiles.txt(以前从未这样做过),我不确定用于C++ 11的编译器标志是什么.我使用GCC 4.8.2,标志是std = c ++ 0x,但我不知道如何处理其他编译器.我不认为他们都使用那个标志,我相信MinGW-TDM使用std = c ++ 11,确保编译器使用c ++ 11的正确方法是什么?

cmake c++11

5
推荐指数
1
解决办法
2384
查看次数

标签 统计

c++ ×1

c++11 ×1

cmake ×1

destructor ×1

pointers ×1

stl ×1