¿Dónde está shared_ptr?

Estoy tan frustrado en este momento después de varias horas tratando de encontrar dónde se encuentra shared_ptr. Ninguno de los ejemplos que veo muestra el código completo para incluir los encabezados de shared_ptr (y de trabajo). ¡Simplemente indicar std , tr1 y no está ayudando en absoluto! ¡He descargado boosters y todo pero todavía no aparece! ¿Puede alguien ayudarme diciéndome exactamente dónde encontrarlo?

¡Gracias por dejarme express mis frustraciones!

EDITAR: veo que mi título ha sido cambiado. Lo siento por eso. Entonces … también fue porque no estaba claro para mí que shared_ptr es “dependiente de la versión de C ++” -> es por eso que no dije mi entorno -> por lo tanto, probablemente por qué fue tan difícil para mí encontrarlo.

Estoy trabajando en MSVS2008.

EDIT 2: No sé por qué, pero estaba incluyendo [memoria] y [boost / tr1 / memory.hpp] y [boost / tr1 / tr1 / memory] mientras buscaba el shared_ptr … por supuesto, no pude ‘t.

Gracias por todas las respuestas.

Hay al menos tres lugares donde puede encontrar shared_ptr :

  1. Si su implementación C ++ admite C ++ 11 (o al menos C ++ 11 shared_ptr ), entonces std::shared_ptr se definirá en .

  2. Si su implementación en C ++ admite las extensiones de biblioteca C ++ TR1, entonces std::tr1::shared_ptr probablemente estará en (Microsoft Visual C ++) o (g ++ ‘s libstdc ++). Boost también proporciona una implementación de TR1 que puede usar.

  3. De lo contrario, puede obtener las bibliotecas de Boost y usar boost::shared_ptr , que se puede encontrar en .

Boost para comenzar

Si desea usarlo de Boost TR1 en su lugar

Ejemplo de shared_ptr

para VS2008 con la actualización del paquete de características, shared_ptr se puede encontrar en el espacio de nombres std :: tr1.

 std::tr1::shared_ptr MyIntSmartPtr = new int; 

de

si tu ruta de instalación de boost (por ejemplo, @ C:\Program Files\Boost\boost_1_40_0 ) se agregó a tu configuración de IDE:

 #include  

Si está buscando shared_ptr de bor boost , podría haber encontrado fácilmente la respuesta al buscar en shared_ptr , siguiendo los enlaces a los documentos, y ver un ejemplo completo de trabajo como este .

En cualquier caso, aquí hay un ejemplo de trabajo completo minimalista para ti que acabo de hackear:

 #include  struct MyGizmo { int n_; }; int main() { boost::shared_ptr p(new MyGizmo); return 0; } 

Para que #include encuentre el encabezado, obviamente las bibliotecas deben estar en la ruta de búsqueda. En MSVC, configure esto en Configuración del proyecto> Propiedades de configuración> C / C ++> Directorios de inclusión adicionales. En mi caso, esto está configurado en C:\Program Files (x86)\boost\boost_1_42