我在使用 SDL 时遇到了一个我无法解决的问题。我想将纹理(指向结构的指针)保留std::map
在我使用 astd::string
作为键和 astd::unique_ptr<texture, void(*)(texture*)>
作为值的地方。我必须在 中使用删除器std::unique_ptr
,因为纹理必须由某个函数释放。纹理也由另一个函数创建。我将代码简化为以下内容:
#include <map>
#include <memory>
int* new_int(){ return new int; }
void delete_int(int* p){ delete p; }
typedef std::unique_ptr<int, void(*)(int*)> int_ptr;
int main()
{
std::map<int, int_ptr> the_map;
the_map[1] = int_ptr(new_int(), delete_int);
return 0;
}
当我尝试在 Visual Studio 2012 中编译此代码时,我收到以下错误:
error C2338: unique_ptr constructed with null deleter pointer.
我觉得很奇怪,因为我提供delete_int
了一个删除器指针。欢迎任何帮助,不同的方法也是如此。提前致谢!