クラス テンプレート coil::Singleton< SingletonClass >

#include <Singleton.h>

coil::Singleton< SingletonClass >に対する継承グラフ

coil::Allocator coil::GlobalFactory< AbstractClass, Identifier, Compare, Creator, Destructor >

すべてのメンバ一覧

Public 型

typedef SingletonClass * SingletonClassPtr
typedef ::coil::Mutex Mutex

Static Public メソッド

static SingletonClass & instance ()

Protected メソッド

 Singleton ()
 ~Singleton ()

Static Protected 変数

static coil::Mutex m_mutex
static SingletonClass * m_instance


説明

template<class SingletonClass>
class coil::Singleton< SingletonClass >

このテンプレートは、任意のクラスを Singleton にするテンプレートである。 以下のようにして使用する。

class A { // }; typedef coil::Singleton<A> A_;

任意の場所で

A& a(A_:instance()); // a は A の唯一のインスタンスが入る

ただし、A自体のコンストラクタは使用できるので、同一のソースで、

A* a = new A();

のようにすることもできるため、注意が必要である。 対象とするクラスを new することを禁止するためには、以下のように、 対象クラスで Singelton を継承 (CRTP) し friend 宣言する必要がある。

class A : public coil::Singleton<A> { public: private: A(){}

friend class coil::Singelton<A>; };

こうすることで、

A* a = new A(); // は禁止される A& a(A::instance()); // が唯一のインスタンスを得る唯一の方法


型定義

template<class SingletonClass>
typedef SingletonClass* coil::Singleton< SingletonClass >::SingletonClassPtr

template<class SingletonClass>
typedef ::coil::Mutex coil::Singleton< SingletonClass >::Mutex


コンストラクタとデストラクタ

template<class SingletonClass>
coil::Singleton< SingletonClass >::Singleton (  )  [inline, protected]

template<class SingletonClass>
coil::Singleton< SingletonClass >::~Singleton (  )  [inline, protected]


関数

template<class SingletonClass>
static SingletonClass& coil::Singleton< SingletonClass >::instance (  )  [inline, static]


変数

template<class SingletonClass>
Singleton< SingletonClass >::Mutex coil::Singleton< SingletonClass >::m_mutex [inline, static, protected]

template<class SingletonClass>
Singleton< SingletonClass >::SingletonClassPtr coil::Singleton< SingletonClass >::m_instance [inline, static, protected]


OpenRTMに対してThu Jan 28 13:25:27 2010に生成されました。  doxygen 1.5.5