gpt4 book ai didi

c++ - shared_ptr 的自定义删除器的附加参数

转载 作者:IT老高 更新时间:2023-10-28 22:35:03 32 4
gpt4 key购买 nike

无论如何我可以向 std::shared_ptr 的删除器发送参数吗?

感觉像:

std::shared_ptr<A> myA( a, myDeleter(a, 5) );   

myDeleter 有这个签名:

void myDeleter(A* a, int i)

(显然上面的语法是错误的,但只是为了强调我需要我的删除器来接受额外的参数。)

最佳答案

您可以在将删除器的第二个参数作为删除器传递之前 std::bind:

auto deleter = std::bind(myDeleter, std::placeholders::_1, 5);
std::shared_ptr<A> myA(a, deleter);

或者,您的删除器可以是一个仿函数,通过其构造函数获取 int:

struct myDeleter
{
myDeleter(int);
void operator()(A*);
};

myDeleter deleter(5);
std::shared_ptr<A> myA(a, deleter);

您也可以使用 lambda 表达式:

std::shared_ptr<A> myA(a, [](A* a){ myDeleter(a, 5); });

关于c++ - shared_ptr 的自定义删除器的附加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15137626/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com