C++ std::shared_ptr использование и информация

Я пытаюсь использовать std::shared_ptr в моем коде. Я видел, что были другие вопросы по этому вопросу, но я все еще получаю ошибку компилятора. Я получил правильную версию GCC и настройки?

Что я сделал:

Я попытался скомпилировать мой код с обоими заголовками отдельно - <memory> а также <tr1/memory> но все равно получите ошибки ниже в обоих случаях.

Я использую версию gcc:

gcc --version
gcc (GCC) 4.3.2

Когда я включаю <memory> заголовок я использую std::shared_ptr и с <tr1/memory> заголовок я использую std::tr1::shared_ptr? Это правильно?

Я настроил shared_ptr следующим образом:

std::shared_ptr<A*> ptr_A = shared_ptr( new A() );

Я получаю следующую ошибку:

src/WH.cxx:156: error: 'shared_ptr' is not a member of 'std'
src/WH.cxx:162: error: 'shared_ptr' was not declared in this scope

когда я попробую <tr1/memory> заголовок

src/WH.cxx:156: error: 'std::tr1' has not been declared
src/WH.cxx:162: error: 'shared_ptr' was not declared in this scope

Похоже, я не включаю что-то правильно. Есть идеи?

Я знаю, что библиотека повышения shared_ptr но эти библиотеки не вариант для меня на данный момент.

РЕДАКТИРОВАТЬ: Просто добавить, мои параметры компилятора являются следующими: g++ -O3 -g3 -m32 -fPIC -Wno-deprecated -pthread -m32 Я что-то пропустил?

PS Есть ли полезная литература по стандартным указателям?

3 ответа

Решение

std::tr1::shared_ptr является частью дополнения TR1 к C++ STL.
С GCC это доступно либо через #include <tr1/memory> (GCC 4.1) или #include <memory> (GCC 4.3)

Вы также просили ссылки или литературу...

Я нашел 3 статьи, которые могут помочь:

Также комментарий к вашему примеру кода:

std::shared_ptr<A*> ptr_A = shared_ptr( new A() ); 

Аргумент шаблона должен быть A вместо A*:

std::shared_ptr<A> ptr_A = shared_ptr( new A() ); 

Если у вас нет shared_ptr в STD вы можете использовать его из Boost.

#include <boost/shared_ptr.hpp>

boost::shared_ptr<A> ptr_A( new A() );
Другие вопросы по тегам