我正在使用SDL2开发C++应用程序,并想使用shared_ptr
来保存指针。所以我做了这样的事情:
typedef std::shared_ptr<SDL_Window> SDLWindowPtr;
我需要在整个程序中使用自定义删除函数,能否在typedef中实现?如果可以,如何实现?删除函数名称为SDL_DestroyWindow
。如果不行,如何让shared_ptr
使用SDL_DestroyWindow
作为自定义删除函数?
提前感谢!
我正在使用SDL2开发C++应用程序,并想使用shared_ptr
来保存指针。所以我做了这样的事情:
typedef std::shared_ptr<SDL_Window> SDLWindowPtr;
我需要在整个程序中使用自定义删除函数,能否在typedef中实现?如果可以,如何实现?删除函数名称为SDL_DestroyWindow
。如果不行,如何让shared_ptr
使用SDL_DestroyWindow
作为自定义删除函数?
提前感谢!
在构造函数中将自定义删除器传递给shared_ptr
,因此不能使用typedef
(删除器不是实例化的shared_ptr
类型的一部分)。
对于unique_ptr
,可以实现此功能(其中删除器是类型的一部分)。
我的建议是创建工厂方法来生成SDLWindowPtr
(分配适当的删除器)。类似于std::make_shared
但专为您的系统设计(例如createSDLWindow
?)。
shared_ptr
的构造函数中传递删除器,以下是一个示例:std::shared_ptr<MyObj> ptr(CreateMyObj(), std::ptr_fun(FreeMyObj));
std::shared_ptr
的一部分。每次创建std::shared_ptr
实例时,都应该指定deleter。 - grisha