我有几个来自 3rd 方库的类,类似于 StagingConfigDatabase 类,它需要在创建后被销毁。我正在为 RAII 使用 shared_ptr,但我更愿意使用一行代码创建 shared_ptr,而不是像我的示例所示那样使用单独的模板仿函数。也许使用 lambdas?或绑定?
struct StagingConfigDatabase
{
static StagingConfigDatabase* create();
void destroy();
};
template<class T>
struct RfaDestroyer
{
void operator()(T* t)
{
if(t) t->destroy();
}
};
int main()
{
shared_ptr<StagingConfigDatabase> pSDB(StagingConfigDatabase::create(), RfaDestroyer<StagingConfigDatabase>());
return 1;
}
我正在考虑类似的事情:
shared_ptr<StagingConfigDatabase> pSDB(StagingConfigDatabase::create(), [](StagingConfigDatabase* sdb) { sdb->destroy(); } );
但这不编译:(
帮助!