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

Singleton テンプレートクラス. [詳細]

#include <Singleton.h>

すべてのメンバ一覧

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
 SingletonClass オブジェクト.

説明

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

Singleton テンプレートクラス.

このテンプレートは、任意のクラスを 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 ::coil::Mutex coil::Singleton< SingletonClass >::Mutex
template<class SingletonClass>
typedef SingletonClass* coil::Singleton< SingletonClass >::SingletonClassPtr

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

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 >::SingletonClassPtr coil::Singleton< SingletonClass >::m_instance [inline, static, protected]
template<class SingletonClass>
Singleton< SingletonClass >::Mutex coil::Singleton< SingletonClass >::m_mutex [inline, static, protected]
OpenRTM-aistに対してFri Oct 28 18:31:15 2016に生成されました。  doxygen 1.6.3