c++ - ¿Dónde está shared_ptr?
boost c++11 (4)
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
), entoncesstd::shared_ptr
se definirá en<memory>
.Si su implementación en C ++ admite las extensiones de biblioteca C ++ TR1, entonces
std::tr1::shared_ptr
probablemente estará en<memory>
(Microsoft Visual C ++) o<tr1/memory>
(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/shared_ptr.hpp>
.
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 <memory>
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 expresar 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.
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 <boost/shared_ptr.hpp>
struct MyGizmo
{
int n_;
};
int main()
{
boost::shared_ptr<MyGizmo> 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
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<int> 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 <boost/shared_ptr.hpp>