Shared_ptr自定义删除器

冲啊

我需要为shared_ptr做自定义删除器。我知道这可以通过类似的方式完成:

std::shared_ptr<SDL_Surface>(Surf_return_f(), MyDeleter);

但是我想以我的unique_ptr自定义删除器的样式来制作它们:

struct SDL_Surface_Deleter {
    void operator()(SDL_Surface* surface) {
        SDL_FreeSurface(surface);
    }
};

using SDL_Surface_ptr = std::unique_ptr<SDL_Surface, SDL_Surface_Deleter>;

有什么办法吗?

布赖恩

似乎您正在尝试定义一个类型别名,该别名表示“std::shared_ptr具有我的删除器类型”。没有这样的事情,因为std::shared_ptr有一个类型擦除的删除器(该删除器不是该类型的一部分)。

相反,您可以创建的自定义版本make_shared

template <class... Args>
std::shared_ptr<SDL_Surface> make_sdl_surface(Args&&... args) {
    return std::shared_ptr<SDL_Surface>(new SDL_Surface(std::forward<Args>(args)...),
                                        SDL_Surface_Deleter{});
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将具有自定义删除器的unique_ptr移到shared_ptr

来自分类Dev

std :: shared_ptr:未调用自定义删除器

来自分类Dev

shared_ptr<> 的自定义删除器给出“无上下文错误”

来自分类Dev

具有std :: function的std :: shared_ptr作为自定义删除器和分配器

来自分类Dev

shared_ptr分配-是否也复制自定义删除程序?

来自分类Dev

如何正确使用自定义shared_ptr删除程序?

来自分类Dev

Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

来自分类Dev

配备有功能指针作为自定义删除器的unique_ptr是否与shared_ptr大小相同?

来自分类Dev

Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

来自分类Dev

如何创建自定义的shared_ptr?

来自分类Dev

“<function-style-cast>”:在使用自定义删除器创建 shared_ptr 时无法从“初始化列表”转换为“std::shared_ptr<SDL_Window>”

来自分类Dev

带有自定义运算符的unique / shared_ptr =

来自分类Dev

unique_ptr 的有状态自定义删除器

来自分类Dev

自定义删除器,用于std :: shared_ptrs

来自分类Dev

使用自定义对象声明 shared_ptr 数组时出现错误 C2664

来自分类Dev

shared_ptr的删除器是否进行任何同步?

来自分类Dev

具有自定义删除器的unique_ptr构造函数被删除

来自分类Dev

unique_ptr,自定义删除器和零规则

来自分类Dev

混淆使用unique_ptr和自定义删除器

来自分类Dev

使用带有unique_ptr的自定义删除器

来自分类Dev

用unique_ptr和自定义删除器包装C代码

来自分类Dev

std :: unique_ptr <T []>和自定义分配器删除器

来自分类Dev

使用std :: function对象将自定义删除器传递给std :: unique_ptr

来自分类Dev

std :: unique_ptr使用带有很少参数的自定义删除器

来自分类Dev

C ++ 11使用unique_ptr和自定义删除器

来自分类Dev

了解采用自定义删除器的unique_ptr的构造函数

来自分类Dev

使用std :: function对象将自定义删除器传递给std :: unique_ptr

来自分类Dev

初始化传递给unique_ptr自定义删除器的函子

来自分类Dev

使用typedef为std :: unique_ptr指定自定义默认删除器

Related 相关文章

  1. 1

    将具有自定义删除器的unique_ptr移到shared_ptr

  2. 2

    std :: shared_ptr:未调用自定义删除器

  3. 3

    shared_ptr<> 的自定义删除器给出“无上下文错误”

  4. 4

    具有std :: function的std :: shared_ptr作为自定义删除器和分配器

  5. 5

    shared_ptr分配-是否也复制自定义删除程序?

  6. 6

    如何正确使用自定义shared_ptr删除程序?

  7. 7

    Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

  8. 8

    配备有功能指针作为自定义删除器的unique_ptr是否与shared_ptr大小相同?

  9. 9

    Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

  10. 10

    如何创建自定义的shared_ptr?

  11. 11

    “<function-style-cast>”:在使用自定义删除器创建 shared_ptr 时无法从“初始化列表”转换为“std::shared_ptr<SDL_Window>”

  12. 12

    带有自定义运算符的unique / shared_ptr =

  13. 13

    unique_ptr 的有状态自定义删除器

  14. 14

    自定义删除器,用于std :: shared_ptrs

  15. 15

    使用自定义对象声明 shared_ptr 数组时出现错误 C2664

  16. 16

    shared_ptr的删除器是否进行任何同步?

  17. 17

    具有自定义删除器的unique_ptr构造函数被删除

  18. 18

    unique_ptr,自定义删除器和零规则

  19. 19

    混淆使用unique_ptr和自定义删除器

  20. 20

    使用带有unique_ptr的自定义删除器

  21. 21

    用unique_ptr和自定义删除器包装C代码

  22. 22

    std :: unique_ptr <T []>和自定义分配器删除器

  23. 23

    使用std :: function对象将自定义删除器传递给std :: unique_ptr

  24. 24

    std :: unique_ptr使用带有很少参数的自定义删除器

  25. 25

    C ++ 11使用unique_ptr和自定义删除器

  26. 26

    了解采用自定义删除器的unique_ptr的构造函数

  27. 27

    使用std :: function对象将自定义删除器传递给std :: unique_ptr

  28. 28

    初始化传递给unique_ptr自定义删除器的函子

  29. 29

    使用typedef为std :: unique_ptr指定自定义默认删除器

热门标签

归档