2009-03-17 8 views
12

これは些細なことする必要がありますが(このようなクラスが存在しない場合を除き!)私はそれを見つけることができないようリファレンスカウントポインタのSTLクラス?

STLクラス(またはクラスのセット)は何のスマートポインタのために?

UPDATE応答のための

おかげで、
私は標準的な実装はありません、私は驚いていると言わなければなりません。

私はこの1つを使用して終了:http://archive.gamedev.net/reference/articles/article1060.asp

答えて

14

既に言及されているTR1 shared_ptrを除いて、STLに参照カウントポインタはありません。

boost :: shared_ptrを使用することをお勧めします(ブーストのダウンロードは十分で、コンパイルすることはありません。その実装はヘッダーのみです)。

また、Lokiライブラリのスマートポインタ(ヘッダーのみの実装)を見てみることもできます。

スマートポインタの概要については、thereを参照してください。

+3

boost :: shared_ptrがstd :: tr1 :: shared_ptrのインスピレーションでした。その後std :: tr1 :: shared_ptrはC++ 0xでstd :: shared_ptrになります。 –

9

したくない場合は/ブーストを使用してあなたのコンパイラがTR1を実装することはできません、あなたは(ブーストから借りた)shared_ptrを使用することができます。

#include <tr1/memory> 

... 

std::tr1::shared_ptr<Foo> ptr(new Foo); 

そうでない場合、いいえ、vanilla STLにstd::auto_ptr以外のスマートポインタはありません。

1

COMオブジェクトの場合、CComPtr<>を使用します。

+1

CComPtr参照カウントされていません - 基礎となるオブジェクト自体はです。 –

+0

そうです。 –

0

は、STLのPLUSでいくつかの時間のために実装代替があり、source forge

"STLplus was originally intended as a library to extend the STL by providing missing container data structures such as smart-pointers, matrices, trees and graphs."

3

時の参照は、C++ 11には、上の行進:

std::shared_ptr 
std::weak_ptr 

など