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
:
Si su implementación C ++ admite C ++ 11 (o al menos C ++ 11 shared_ptr
), entonces std::shared_ptr
se definirá en
.
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.
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