SDL を使用していて、解決できない問題に遭遇しました。キーとして an を、値として astd::map
を使用する場所にテクスチャ (構造体へのポインター) を保持したいと考えています。テクスチャを特定の関数で解放する必要があるため、 でデリータを使用する必要があります。テクスチャは別の関数によっても作成されます。コードを以下のように簡略化しました。std::string
std::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
私は削除ポインタとして提供したので、これは奇妙だと思います。どんな助けも大歓迎です。さまざまなアプローチもそうです。前もって感謝します!