3

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

4

1 に答える 1