Где shared_ptr?
Я так расстроен сейчас, после нескольких часов, пытаясь найти, где находится shared_ptr. Ни один из примеров, которые я вижу, не показывает полный код для включения заголовков для shared_ptr
(и работы). Простое указание std
, tr1
и <memory>
не помогает вообще! Я загрузил boosts и все, но все же он не появляется! Может ли кто-нибудь помочь мне, указав, где его найти?
Спасибо, что позволил мне выразить свои разочарования!
EDIT:
Я вижу, что мое название было изменено. Извини за это.
Итак... это было также из-за того, что мне было непонятно, что shared_ptr "зависит от версии С++" → почему я не указал свою среду → поэтому, вероятно, почему мне было так трудно найти его.
Я работаю над MSVS2008.
ИЗМЕНИТЬ 2:
Я не знаю, почему, но я включил [память] и [boost/tr1/memory.hpp] и [boost/tr1/tr1/memory], глядя повсюду в shared_ptr.. конечно, я не мог.
Спасибо за все ответы.
Ответы
Ответ 1
Есть как минимум три места, где вы можете найти shared_ptr
:
-
Если ваша реализация на С++ поддерживает С++ 11 (или, по крайней мере, С++ 11 shared_ptr
), то std::shared_ptr
будет определена в <memory>
.
-
Если ваша реализация на С++ поддерживает расширения библиотеки С++ TR1, то std::tr1::shared_ptr
скорее всего будет находиться в <memory>
(Microsoft Visual С++) или <tr1/memory>
(g++ libstdС++). Boost также предоставляет реализацию TR1, которую вы можете использовать.
-
В противном случае вы можете получить библиотеки Boost и использовать boost::shared_ptr
, который можно найти в <boost/shared_ptr.hpp>
.
Ответ 2
Boost Начало работы
Если вы хотите использовать его вместо Boost TR1
shared_ptr Пример
Ответ 3
для VS2008 с обновлением пакета обновления, shared_ptr можно найти в пространстве имен std:: tr1.
std::tr1::shared_ptr<int> MyIntSmartPtr = new int;
о
если вы добавили в настройки IDE дополнительный путь установки (например, @ C:\Program Files\Boost\boost_1_40_0
):
#include <boost/shared_ptr.hpp>
Ответ 4
Если вы ищете bor boost shared_ptr, вы могли бы легко найти ответ googling 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 вы устанавливаете это в настройках проектa > Свойства конфигурации > C/С++ > Дополнительные каталоги включения. В моем случае это значение равно C:\Program Files (x86)\boost\boost_1_42