Classe STL pour les pointeurs comptés en références?
-
19-08-2019 - |
Question
Cela devrait être trivial mais je n'arrive pas à le trouver (sauf si une telle classe existe!)
Qu'est-ce que la classe STL (ou un ensemble de classes) pour les pointeurs intelligents?
MISE À JOUR
Merci pour les réponses,
Je dois dire que je suis surpris qu'il n'y ait pas d'implémentation standard.
J'ai finalement utilisé celui-ci: http://archive.gamedev.net/reference /articles/article1060.asp
La solution
À l'exception du TR1 shared_ptr déjà mentionné, il n'y a pas de pointeur compté en référence dans STL.
Je vous suggère d'utiliser boost :: shared_ptr (le téléchargement de boost sera suffisant, il n'y a rien à compiler, sa mise en oeuvre est en-tête uniquement).
Vous pouvez également consulter les pointeurs intelligents des bibliothèques Loki (à nouveau, implémentation avec en-tête uniquement).
Pour obtenir un aperçu des pointeurs intelligents disponibles, voir à cet endroit .
Autres conseils
Si vous ne voulez pas / ne pouvez pas utiliser Boost et , votre compilateur implémente TR1 , vous pouvez utiliser shared_ptr
(emprunté à Boost):
#include <tr1/memory>
...
std::tr1::shared_ptr<Foo> ptr(new Foo);
Sinon, non, il n'y a pas de pointeur intelligent à l'exception de std::auto_ptr
dans STL vanille.
L'heure avance, en C ++ 11:
std::shared_ptr
std::weak_ptr
etc.
Pour les objets COM, utilisez CComPtr < ; > .
Il existe une alternative implémentée depuis un certain temps dans STL PLUS, voir 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."