2

私はこのようなクラスを持っています:

class A 
{

 private:

 B* ptr;

}

しかし、B ptr は異なる A オブジェクト間で共有されます。同じptrを指す他のAオブジェクトが問題なく続行できるように、Aが破壊されたときにBがオンのままになるようにauto_ptrを使用するにはどうすればよいですか。これは大丈夫ですか:

class A
{
public:

 auto_ptr< B > m_Ptr;

private:

 B* ptr;

}

人々がこれを実装したさまざまな方法と、彼らが互いに見た問題/利点は何ですか...ありがとう

4

2 に答える 2

6

探しているのは shared_ptr です。まさにこのタイプのシナリオを処理します。

ただし、これは STL ではなく BOOST ライブラリの一部であるため、特定のプラットフォームでは利用できない場合があります。ただし、少しグーグルで検索すると、ここでニーズを満たす多くのスタンドアロンのrefcountedポインター実装を見つけることができます。

于 2009-09-03T15:49:24.233 に答える
3

あなたの質問を明確に理解している場合は、::std::tr1::shared_ptrまたはを使用することをお勧めし::boost::shared_ptrます。

この記事は、 TR1 の shared_ptr に関する優れたチュートリアルです。ブーストは基本的に同じです。TR1 バージョンを使用することをお勧めします。なぜなら、すべての C++ コンパイラが TR1 をサポートすることになっているためです。Boost はアドオン ライブラリであり、どこでも見つけることができない可能性があります。

于 2009-09-03T15:50:32.533 に答える