0
私は破壊の呼び出しでリリースする必要があるサードパーティオブジェクトの束を持っています。これらのオブジェクトをヒープ上に割り当てる必要があるので、メモリ管理を処理するためにstd :: unique_ptrを作成したかったのです。しかし、私のデリーターは決して呼び出されません。私は間違って何をしていますか?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;
}
何も間違いはありません。 [mcve]を投稿してください。 –