shared_ptr的自定义删除器的附加参数
Additional arguments for custom deleter of shared_ptr
是否可以将参数发送给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); });
相关文章:
- 参数化自定义CMake工具链
- 没有默认构造函数作为模板参数的自定义比较器
- C++ 通过自定义赋值运算符隐式转换函数参数
- C++自定义分配器大小参数作为模板参数会引发编译器错误
- 如何实现接受参数的自定义流操纵器?
- 将自定义对象作为参数从目标 C 传递到 C++
- 有没有办法使用 googletest 创建自定义参数生成器?
- 使用自定义参数的过载删除操作员
- 如何将参数传递到自定义比较C 中分类的函数
- 示例自定义共享_ptr-我如何传递构造函数参数 - 我在此处使用variadic模板
- 自定义一元/二进制Expr() eigen3 的参数
- JNI自定义异常具有多个参数
- 与自定义比较函数作为模板参数的编译器错误
- 特征自定义类和函数参数
- 初始化在 C++ 中自定义类的构造函数中没有参数的静态 const 类成员
- Cython:具有自定义参数类型的STD ::功能回调
- 在1语句中传递一个自定义函数作为模板参数
- 传递参数以提升精神自定义解析器
- 具有带参数的构造函数的自定义类的映射
- 如何自定义转换模板参数