- Main Page
- Namespaces
- Classes
- Related Pages

# 被共有（シェアード）ポインタ

SharedPtrは BuddhaLib のヘッダで定義され、STLコンテナに格納可能な参照カウント付きの特別な ポインタです。

このポインタは、解放するタイミングのミスによってアプリケーションの実行に重大な影響を及ぼす 資源に対して定義され、積極的に用いられています。また、このテンプレートクラスを用いて、シェ アードポインタを作成することができます。

## コンベンション

- 各クラスが内部に保持する他クラスの通常のポインタは、それがラッピング対象でない場合、 デストラクタで解放を行わない。
- BuddhaLib が提供する共有ポインタの型は オリジナルクラス名 + Ptr である。たとえば Model クラスの共有ポインタは ModelPtr になる。
- 共有ポインタと通常のポインタの両方の取得メンバ関数が提供される場合、共有ポインタは GetXXXPtr()、通常のポインタは GetXXX で取得する。

## 独自のシェアード・ポインタ型の定義

SharedPtr<T>を使って、自前のクラスのシェアード・ポインタ型を用意することができます。

                class YourclassPtr : public SharedPtr<Yourclass>
                {
                public:
                      YourclassPtr() : SharedPtr<Yourclass>() {}
                      explicit YourclassPtr(Yourclass* rep) : SharedPtr<Yourclass>(rep) {}
                      YourclassPtr(const YourclassPtr &r) : SharedPtr<Yourclass>(r) {}

                protected:
                      void destory(void)
                      {
                            // 独自のデストラクションがあれば、ここに書く
                            SharedPtr<Yourclass>::destory();
                      }
                }