std :: shared_ptr:带自定义删除器的typedef

Nid*_*ger 4 c++ sdl typedef shared-ptr

我正在使用SDL2开发一个C++应用程序,并希望shared_ptr用来保存指针的东西.所以我这样做:

typedef std::shared_ptr<SDL_Window> SDLWindowPtr;
Run Code Online (Sandbox Code Playgroud)

我需要在整个事情上使用自定义删除器.是否可以在typedef中包含它?如果有,怎么样?调用删除功能SDL_DestroyWindow.如果没有,我如何shared_ptr使用SDL_DestroyWindow自定义删除功能?

提前致谢!

Hco*_*org 6

自定义删除器传递给shared_ptr构造函数,因此无法使用typedef(删除器不是实例化类型的一部分shared_ptr).

它可以用于unique_ptr(删除器是类型的一部分).

我的建议:创建将生成的工厂方法SDLWindowPtr(为它们分配适当的删除器).像std::make_shared你的系统一样专门用于你的系统(例如createSDLWindow?).