Я пытаюсь использовать 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
Похоже, я не включаю что-то правильно. Любые идеи?
Я знаю, что библиотека boost имеет shared_ptr
, но сейчас эти библиотеки не подходят для меня.
EDIT: Чтобы добавить, мои параметры компилятора следующие: g++ -O3 -g3 -m32 -fPIC -Wno-deprecated -pthread -m32 Я что-то пропустил?
P.S. Есть ли полезная литература по умным указателям std?