Я так расстроен прямо сейчас после нескольких часов, пытаясь найти, где shared_ptr расположен. Ни один из примеров я вижу, что шоу завершает код для включения заголовков для shared_ptr
(и работающий). Просто утверждение std
, tr1
и <memory>
не помогает вообще! Я загрузил повышения, и все кроме все еще этого не обнаруживаются! Кто-то может помочь мне путем сообщения точно, где найти его?
Спасибо за разрешение мне вентилировать мои разочарования!
Править: Я вижу, что мой заголовок был изменен. Извините за это. Так... это было также, потому что мне не было ясно, что shared_ptr является "иждивенцем версии C++"-> вот почему я не заявил свою среду-> поэтому, вероятно, почему для меня было настолько трудно найти его.
Я работаю над MSVS2008.
РЕДАКТИРОВАНИЕ 2: Я не знаю, почему, но я включал [память] и [boost/tr1/memory.hpp] и [boost/tr1/tr1/memory] при искании везде shared_ptr.. конечно, я не мог.
Спасибо за все ответы.
Есть по крайней мере три места, где вы можете найти shared_ptr
:
Если ваша реализация C++ поддерживает C++11 (или хотя бы shared_ptr
), то std::shared_ptr
будет определен в
.
Если ваша реализация C++ поддерживает расширения библиотеки C++ TR1, то std::tr1::shared_ptr
, вероятно, будет находиться в
(Microsoft Visual C++) или
(libstdc++ от g++). Boost также предоставляет реализацию TR1, которую вы можете использовать.
В противном случае вы можете получить библиотеки Boost и использовать boost::shared_ptr
, который можно найти в
.
для 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>
Если вы ищете бор 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