Pregunta

Esto debería ser trivial, pero parece que no puedo encontrarlo (¡a menos que no exista tal clase!)

¿Cuál es la clase STL (o conjunto de clases) para punteros inteligentes?

UPDATE

Gracias por las respuestas,
Debo decir que me sorprende que no haya una implementación estándar.

Terminé usando este: http://archive.gamedev.net/reference /articles/article1060.asp

¿Fue útil?

Solución

Con la excepción del ya mencionado TR1 shared_ptr, no hay ningún puntero contado por referencia en STL.

Le sugiero que use boost :: shared_ptr (descargar boost será suficiente, no hay nada que compilar, su implementación es solo de encabezado).

También es posible que desee echar un vistazo a los punteros inteligentes de las bibliotecas de Loki (nuevamente, implementación de solo encabezado).

Para obtener una descripción general de los punteros inteligentes disponibles, consulte allí .

Otros consejos

Si no quiere / no puede usar Boost y su compilador implementa TR1 , puede usar shared_ptr (prestado de Boost):

#include <tr1/memory>

...

std::tr1::shared_ptr<Foo> ptr(new Foo);

De lo contrario, no, no hay punteros inteligentes excepto std::auto_ptr en STL de vainilla.

El tiempo avanza, en C ++ 11:

std::shared_ptr
std::weak_ptr

etc.

Para objetos COM, use CComPtr < ; > .

Existe una alternativa implementada por algún tiempo en STL PLUS, consulte 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."

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top