Shared_ptrの場所を見つけようとして数時間たった今、私はとてもイライラしています。私が見る例のどれも、shared_ptr
(および動作中)のヘッダーを含む完全なコードを示していません。単にstd
、tr1
、および<memory>
と述べるだけではまったく役に立ちません。ブーストをすべてダウンロードしましたが、まだ表示されません!誰かがそれを見つける場所を正確に伝えることで私を助けることができますか?
フラストレーションを解消させてくれてありがとう!
編集:タイトルが変更されたようです。ごめんなさいそのため、shared_ptrが「C++バージョン依存」であることが明確ではなかったためでもありました->それが、環境を記述しなかった理由です->したがって、おそらくそれを見つけるのが非常に困難でした。
私はMSVS2008に取り組んでいます。
編集2:理由はわかりませんが、shared_ptrを探している間に[memory]と[boost/tr1/memory.hpp]と[boost/tr1/tr1/memory]を含めていました。もちろん、できませんでした。 't。
すべての回答をありがとう。
shared_ptr
を見つけることができる場所は少なくとも3つあります。
C++実装がC++ 11(または少なくともC++ 11 shared_ptr
)をサポートしている場合、std::shared_ptr
は<memory>
で定義されます。
C++実装がC++ TR1ライブラリ拡張をサポートしている場合、std::tr1::shared_ptr
はおそらく<memory>
(Microsoft Visual C++)または<tr1/memory>
(g ++のlibstdc ++)にあります。 Boostは、使用可能なTR1実装も提供します。
それ以外の場合は、Boostライブラリを取得して、boost::shared_ptr
にある<boost/shared_ptr.hpp>
を使用できます。
機能パックが更新された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>
探しているのがbor boost の shared_ptr であれば、 で簡単に答えを見つけることができます。 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
に設定されています