Ich habe mehrere Klassen aus 3rd-Party-Bibliothek ähnlich wie die Klasse, StagingConfigDatabase, die nach der Erstellung zerstört werden muss. Ich verwende eine shared_ptr für RAII, würde es aber vorziehen, die shared_ptr mit einer eine einzige Code-Zeile anstatt einen separaten Vorlagenfunktor zu verwenden, wie mein Beispiel zeigt. Vielleicht mit Lambdas? oder binden?
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;
}
Ich dachte an etwas wie:
shared_ptr<StagingConfigDatabase> pSDB(StagingConfigDatabase::create(), [](StagingConfigDatabase* sdb) { sdb->destroy(); } );
aber das lässt sich nicht kompilieren :(
Hilfe!