Где shared_ptr?

Я так расстроен прямо сейчас после нескольких часов, пытаясь найти, где shared_ptr расположен. Ни один из примеров я вижу, что шоу завершает код для включения заголовков для shared_ptr (и работающий). Просто утверждение std, tr1 и <memory> не помогает вообще! Я загрузил повышения, и все кроме все еще этого не обнаруживаются! Кто-то может помочь мне путем сообщения точно, где найти его?

Спасибо за разрешение мне вентилировать мои разочарования!

Править: Я вижу, что мой заголовок был изменен. Извините за это. Так... это было также, потому что мне не было ясно, что shared_ptr является "иждивенцем версии C++"-> вот почему я не заявил свою среду-> поэтому, вероятно, почему для меня было настолько трудно найти его.

Я работаю над MSVS2008.

РЕДАКТИРОВАНИЕ 2: Я не знаю, почему, но я включал [память] и [boost/tr1/memory.hpp] и [boost/tr1/tr1/memory] при искании везде shared_ptr.. конечно, я не мог.

Спасибо за все ответы.

102
задан James McNellis 9 March 2012 в 03:01
поделиться

4 ответа

Есть по крайней мере три места, где вы можете найти shared_ptr:

  1. Если ваша реализация C++ поддерживает C++11 (или хотя бы shared_ptr), то std::shared_ptr будет определен в .

  2. Если ваша реализация C++ поддерживает расширения библиотеки C++ TR1, то std::tr1::shared_ptr, вероятно, будет находиться в (Microsoft Visual C++) или (libstdc++ от g++). Boost также предоставляет реализацию TR1, которую вы можете использовать.

  3. В противном случае вы можете получить библиотеки Boost и использовать boost::shared_ptr, который можно найти в .

167
ответ дан 24 November 2019 в 04:32
поделиться

для VS2008 с обновлением пакета функций, shared_ptr можно найти в пространстве имен std :: tr1.

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

из

, если у вас был путь ускоренной установки (например, @ C: \ Program Files \ Boost \ boost_1_40_0 ), добавленный в настройки IDE:

#include <boost/shared_ptr.hpp>
6
ответ дан 24 November 2019 в 04:32
поделиться

Если вы ищете бор boost shared_ptr , вы могли бы легко найти ответ, поискав в Google shared_ptr , следуя ссылкам на документацию, и вытаскивая полный рабочий пример, такой как this .

В любом случае, вот вам минималистичный полный рабочий пример, который я только что взломал:

#include <boost/shared_ptr.hpp>

struct MyGizmo
{
    int n_;
};

int main()
{
    boost::shared_ptr<MyGizmo> p(new MyGizmo);
    return 0;
}

Чтобы #include нашел заголовок, библиотеки, очевидно, должны быть в путь поиска. В MSVC вы устанавливаете это в «Параметры проекта»> «Свойства конфигурации»> «C / C ++»> «Дополнительные каталоги включения». В моем случае это установлено на C: \ Program Files (x86) \ boost \ boost_1_42

3
ответ дан 24 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: