108

shared_ptrがどこにあるかを見つけようとして数時間経った今、私はとてもイライラしています。私が見ている例のどれも、(そして機能している)ヘッダーを含めるための完全なコードを示していませんshared_ptr。単に述べるだけstdで、tr1まったく<memory>役に立たない!ブーストをダウンロードしましたが、それでも表示されません。誰かがそれを見つける場所を正確に伝えることによって私を助けることができますか?

欲求不満を解消させてくれてありがとう!

編集:タイトルが変更されたようです。申し訳ありません。それで...それはまた、shared_ptrが「C ++バージョン依存」であることが私には明らかではなかったためです->それが私の環境を述べなかった理由です->したがって、おそらく私がそれを見つけるのが非常に困難だった理由です。

私はMSVS2008に取り組んでいます。

編集2:理由はわかりませんが、shared_ptrを探している間、[memory]と[boost / tr1/memory.hpp]と[boost/tr1 / tr1 / memory]を含めていました。もちろん、できませんでした。 't。

すべての回答をありがとう。

4

4 に答える 4

172

見つけることができる場所が少なくとも 3 つありますshared_ptr

  1. C++ 実装が C++11 (または少なくとも C++11 shared_ptr) をサポートしている場合、std::shared_ptrは で定義され<memory>ます。

  2. C++ 実装が C++ TR1 ライブラリ拡張機能をサポートしている場合、 (Microsoft Visual C++) または(g++ の libstdc++)std::tr1::shared_ptrにある可能性があります。Boost は、使用できる TR1 実装も提供します。<memory><tr1/memory>

  3. それ以外の場合は、Boost ライブラリを入手してboost::shared_ptr、 にある を使用できます<boost/shared_ptr.hpp>

于 2010-05-27T03:09:17.340 に答える
7

ブーストの開始

代わりにBoost TR1から使いたい場合

shared_ptr の例

于 2010-05-27T03:02:32.737 に答える
6

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>
于 2010-05-27T03:06:46.387 に答える
2

ブースト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

于 2010-05-27T14:13:09.630 に答える