¿Dónde está el RPP compartido?


Estoy muy 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 las cabeceras de shared_ptr (y funcionando). Simplemente declarando std, tr1 y <memory> no está ayudando en absoluto! He descargado aumenta y todo, pero todavía no aparece! ¿Puede alguien ayudarme diciéndome exactamente dónde encontrarlo?

¡Gracias por dejarme desahogar mis frustraciones!

EDITAR: Veo que mi título ha sido cambiado. Lo siento por que. Tan... 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 declaré mi entorno > > por lo tanto, probablemente por qué fue tan difícil para mí encontrarlo.

Estoy trabajando en MSVS2008.

[4] EDITAR 2: No se por qué, pero estaba incluyendo [memoria] y [boost/tr1/memoria.hpp] y [boost/tr1/tr1 / memory] mientras se busca en todas partes el shared_ptr.. por supuesto, no podría.

Gracias por todas las respuestas.

Author: James McNellis, 2010-05-27

4 answers

Hay al menos tres lugares donde puedes encontrar shared_ptr:

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

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

  3. De lo contrario, puede obtener el impulso bibliotecas y utilizar boost::shared_ptr, que se puede encontrar en <boost/shared_ptr.hpp>.

 159
Author: James McNellis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-09 03:01:14
 7
Author: Firas Assaad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-27 03:02:32

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 tiene la ruta de instalación de boost (por ejemplo @ C:\Program Files\Boost\boost_1_40_0) agregada a la configuración de su IDE:

#include <boost/shared_ptr.hpp>
 6
Author: YeenFei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-27 10:54:31

Si está buscando bor boost's shared_ptr, podría haber encontrado fácilmente la respuesta buscando shared_ptr, siguiendo los enlaces a los documentos, y tirando de un ejemplo completo de trabajo como this.

En cualquier caso, aquí hay un ejemplo de trabajo minimalista completo para usted 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 el #include encuentre el encabezado, las bibliotecas obviamente deben estar en la ruta de búsqueda. En MSVC, se establece esto en Proyecto Preferencias>Propiedades de configuración > C / C++>Directorios de inclusión adicionales. En mi caso, esto se establece en C:\Program Files (x86)\boost\boost_1_42

 4
Author: John Dibling,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-21 11:36:12