Classe STL per puntatori conteggiati dal riferimento?
-
19-08-2019 - |
Domanda
Questo dovrebbe essere banale ma non riesco a trovarlo (a meno che tale classe non esista!)
Che cos'è la classe STL (o insieme di classi) per i puntatori intelligenti?
Aggiorna
Grazie per le risposte,
Devo dire che sono sorpreso che non ci siano implementazioni standard.
Ho finito per usare questo: http://archive.gamedev.net/reference /articles/article1060.asp
Soluzione
Ad eccezione del già citato TR1 shared_ptr, in STL non è presente alcun puntatore conteggio dei riferimenti.
Ti suggerisco di usare boost :: shared_ptr (il download boost sarà sufficiente, non c'è nulla da compilare, la sua implementazione è solo intestazione).
Potresti anche voler dare un'occhiata agli smart pointer delle librerie Loki (di nuovo, implementazione solo intestazione).
Per una panoramica degli smart pointer disponibili, vedere qui .
Altri suggerimenti
Se non vuoi / non puoi usare Boost e il tuo compilatore implementa TR1 , puoi utilizzare shared_ptr
(preso in prestito da Boost):
#include <tr1/memory>
...
std::tr1::shared_ptr<Foo> ptr(new Foo);
Altrimenti, no, non ci sono puntatori intelligenti tranne std::auto_ptr
in vanilla STL.
Il tempo marcia avanti, in C ++ 11:
std::shared_ptr
std::weak_ptr
ecc.
Per gli oggetti COM, utilizzare CComPtr < ; gt &;.
Esiste un'alternativa implementata da tempo in STL PLUS, vedi source forge
"STLplus was originally intended as a library to extend the STL by providing missing container data structures such as smart-pointers, matrices, trees and graphs."