无论如何我可以向删除者发送参数std::shared_ptr
吗?
感觉就像:
std::shared_ptr<A> myA( a, myDeleter(a, 5) );
哪里myDeleter
有这个签名:
void myDeleter(A* a, int i)
(显然上面的语法是错误的,但只是为了强调我需要我的删除器来接受额外的参数。)
无论如何我可以向删除者发送参数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); });