【发布时间】:2018-01-31 15:12:25
【问题描述】:
我有一堆第三方对象需要通过调用销毁来释放。由于需要在堆上分配这些对象,我想创建一个 std::unique_ptr 来处理内存管理。但是我的删除器永远不会被调用。我做错了什么?
template<typename T>
class ObjPtrDeleter
{
public:
void operator()(T* obj)
{
if (obj)
obj->destroy();
}
};
int main(int args, char** argv)
{
SomeFactory factory;
std::unique_ptr<ISomeInterface1, ObjPtrDeleter<ISomeInterface1>> obj1(factory.create(1));
std::unique_ptr<ISomeInterface2, ObjPtrDeleter<ISomeInterface2>> obj2(factory.create(2));
return 0;
}
【问题讨论】:
-
没有明显的问题。请发帖minimal reproducible example。
标签: c++11