ale*_*reC 14 c++ smart-pointers
无论如何我可以向删除器发送参数std::shared_ptr吗?
感觉像是:
std::shared_ptr<A> myA( a, myDeleter(a, 5) );
Run Code Online (Sandbox Code Playgroud)
myDeleter这个签名在哪里:
void myDeleter(A* a, int i)
Run Code Online (Sandbox Code Playgroud)
(显然上面的语法是错误的,但只是为了强调我需要我的删除器来获取额外的参数.)
Jos*_*eld 25
在将std::bind删除器作为删除器传递之前,你可以删除它的第二个参数:
auto deleter = std::bind(myDeleter, std::placeholders::_1, 5);
std::shared_ptr<A> myA(a, deleter);
Run Code Online (Sandbox Code Playgroud)
或者,您的删除器可以是一个函子,int通过它的构造函数:
struct myDeleter
{
myDeleter(int);
void operator()(A*);
};
myDeleter deleter(5);
std::shared_ptr<A> myA(a, deleter);
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用lambda表达式:
std::shared_ptr<A> myA(a, [](A* a){ myDeleter(a, 5); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4042 次 |
| 最近记录: |