|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
[C++] Loop di chiamata a distruttore.
Salve,
In che modo posso eliminare un elemento da una mappa di unique_ptr senza generare un loop di chiamate al distruttore? Ho la seguente classe: Codice:
#include <map>
template<typename T, typename TKey = std::string>
class Pool {
protected:
static std::map<TKey, std::unique_ptr<T>> pool;
MultiKeyPool(TKey ID);
virtual ~MultiKeyPool() {
if (pool.count(ID)) {
pool.erase(ID);
}
}
}
Il problema è che quando chiamo il distruttore, allora si genera un loop di chiamate perché il distruttore che elimina dalla mappa l'elemento fa in modo che unique_ptr chiami ancora il distruttore (perché sta andando out of scope) e così via. So che posso specificare una funzione personalizzata per il distruttore ma non ho capito esattamente come fare ed il mio dubbio è: come viene eliminato l'elemento da una funzione esterna (non ~MultiKeyPool(), per intenderci)? Ha lo stesso effetto? Ultima modifica di biowep : 16-11-2014 alle 11:31. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:37.



















