让智能指针按特定顺序删除SDL组件
Letting smart pointers delete SDL components in a specific order
好的,基本上,我有一个名为 SDL_Video_wrapper.h 的 SDL 包装器 header。它在名为 detail
的命名空间中包含两个包装器 类:CWindowWrap
和 CRendererWrap
。用户可以通过两个共享指针访问那些 类,定义如下:
using CWindow = std::shared_ptr<detail::CWindowWrap>;//types Here are hidden from the user !
using CRenderer = std::shared_ptr<detail::CRendererWrap>;
并且用户可以使用这两种方法创建那些 shared_ptrs:
CWindow construct_window(Window_properties p){
if (has_init_SDL_Video){
return std::make_shared<detail::CWindowWrap>(p.title, p.xPos, p.yPos, p.width, p.height, p.flags);
}
else
LOG("SDL_Wrapper", "Cannot construct Window : SDL hasn't been initialized !");
return nullptr;
}
和我的Renderer基本一样;vy
我有另一个名为 QUIT_All_Subsystems 的函数,它会关闭 SDL 中的所有内容。
所以,问题是我需要我的智能指针来处理 自动 after Quit_All_Subsytems 被调用(我自动用 atexit(Quit_All_Subsystem)
)
调用它
在此处查看共享指针析构函数并提供示例:http://www.cplusplus.com/reference/memory/shared_ptr/~shared_ptr/
希望对您有所帮助
好的,基本上,我有一个名为 SDL_Video_wrapper.h 的 SDL 包装器 header。它在名为 detail
的命名空间中包含两个包装器 类:CWindowWrap
和 CRendererWrap
。用户可以通过两个共享指针访问那些 类,定义如下:
using CWindow = std::shared_ptr<detail::CWindowWrap>;//types Here are hidden from the user !
using CRenderer = std::shared_ptr<detail::CRendererWrap>;
并且用户可以使用这两种方法创建那些 shared_ptrs:
CWindow construct_window(Window_properties p){
if (has_init_SDL_Video){
return std::make_shared<detail::CWindowWrap>(p.title, p.xPos, p.yPos, p.width, p.height, p.flags);
}
else
LOG("SDL_Wrapper", "Cannot construct Window : SDL hasn't been initialized !");
return nullptr;
}
和我的Renderer基本一样;vy
我有另一个名为 QUIT_All_Subsystems 的函数,它会关闭 SDL 中的所有内容。
所以,问题是我需要我的智能指针来处理 自动 after Quit_All_Subsytems 被调用(我自动用 atexit(Quit_All_Subsystem)
)
在此处查看共享指针析构函数并提供示例:http://www.cplusplus.com/reference/memory/shared_ptr/~shared_ptr/
希望对您有所帮助