我有一个带有 unique_ptr 成员的类。
class Foo {
private:
std::unique_ptr<Bar> bar;
...
};
Bar 是具有 create() 函数和 destroy() 函数的第三方类。
如果我想在独立功能中使用 std::unique_ptr
,我可以这样做:
void foo() {
std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); });
...
}
有没有办法以 std::unique_ptr
作为班级成员来做到这一点?
原文由 huitlarc 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设
create
和destroy
是具有以下签名的免费函数(这似乎是 OP 的代码片段的情况):你可以这样写你的课
Foo
请注意,您不需要在此处编写任何 lambda 或自定义删除器,因为
destroy
已经是一个删除器。