コードで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何か不足していますか?
追伸stdスマートポインターに関する有用な資料はありますか?
std::tr1::shared_ptr
は、C++ STLに追加されたTR1の一部です。
GCCでは、#include <tr1/memory>
(GCC 4.1)または#include <memory>
(GCC 4.3)
あなたは参考文献や文献も求めていました...
次の3つの記事が役立ちます。
std::shared_ptr
。shared_ptr
とサンプルコード。コード例についてのコメント:
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では、ブーストから使用できます。
#include <boost/shared_ptr.hpp>
boost::shared_ptr<A> ptr_A( new A() );