2009-09-03 4 views
2

を取り扱うメンバ変数としてauto_ptrを使用することができます。 auto_ptrを使用すると、Aが破壊されたときにBがオンのままで、同じptrを指す他のAオブジェクトが問題なく処理できるようになります。 は、この外観のOKを行います。人々はこれとすべての問題を実装したさまざまな方法が何であるかをは、どのように私は、このようなクラスを持っている他のメンバ変数

class A 
{ 
public: 

auto_ptr<B> m_Ptr; 

private: 

B* ptr; 

} 

を/利点は、彼らはあなたが探しているものを別の... おかげ

答えて

6

を見たのshared_ptrです。これは、このタイプのシナリオを正確に処理します。

それはあなたの特定のプラットフォーム上で利用できない場合がありますので、これはBOOSTライブラリかかわらずSTLの一部です。しかし、もしあなたの周りにあなたのニーズを満たすことになるスタンドアロンのrefcountedポインタの実装をたくさん見つけることができますビット周りのグーグル。

3

あなたの質問をはっきりと理解している場合は、::std::tr1::shared_ptrまたは::boost::shared_ptrをお勧めします。

この記事はa good tutorial on shared_ptr in TR1です。ブーストは基本的に同じです。あなたがそれを持っていれば、TR1バージョンを使うことをお勧めします。なぜなら、すべてのC++コンパイラは、どこにも見つからないアドオンライブラリであるTR1をサポートすることになっているからです。