让智能指针按特定顺序删除SDL组件

时间:2015-04-27 14:29:36

标签: c++ sdl smart-pointers

好的,基本上,我有一个名为SDL_Video_wrapper.h的SDL包装器头。它包含两个包装类:名为CWindowWrap的名称spce中的CRendererWrapdetail。用户可以通过两个共享指针访问这些类,定义如下:

 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;
 }

它与我的渲染器基本相同; vy

我有另一个名为QUIT_All_Subsystems的函数,它关闭了SDL中的所有内容。

所以,问题是我需要智能指针在调用Quit_All_Subsytems之后自动 (我自动用atexit(Quit_All_Subsystem)调用它)

1 个答案:

答案 0 :(得分:2)

使用提供的示例查看共享指针析构函数:http://www.cplusplus.com/reference/memory/shared_ptr/~shared_ptr/

希望这有帮助