OpenRTM-aist  1.2.1
公開型 | 静的公開メンバ関数 | 限定公開メンバ関数 | 静的限定公開変数類 | 全メンバ一覧
coil::Singleton< SingletonClass > クラステンプレート

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

#include <Singleton.h>

coil::Singleton< SingletonClass > 連携図
Collaboration graph
[凡例]

公開型

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

静的公開メンバ関数

static SingletonClass & instance ()
 インスタンス生成 [詳解]
 

限定公開メンバ関数

 Singleton ()
 コンストラクタ [詳解]
 
 ~Singleton ()
 デストラクタ [詳解]
 

静的限定公開変数類

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 ( )
inlineprotected

コンストラクタ

コンストラクタ

参照元 coil::Singleton< LocalServiceAdmin >::~Singleton().

template<class SingletonClass>
coil::Singleton< SingletonClass >::~Singleton ( )
inlineprotected

デストラクタ

デストラクタ。

関数詳解

template<class SingletonClass>
static SingletonClass& coil::Singleton< SingletonClass >::instance ( )
inlinestatic

インスタンス生成

インスタンスを生成する。

戻り値
インスタンス

メンバ詳解

template<class SingletonClass>
Singleton< SingletonClass >::SingletonClassPtr coil::Singleton< SingletonClass >::m_instance
staticprotected

SingletonClass オブジェクト

参照元 coil::Singleton< LocalServiceAdmin >::instance().

template<class SingletonClass>
Singleton< SingletonClass >::Mutex coil::Singleton< SingletonClass >::m_mutex
staticprotected

排他制御オブジェクト

参照元 coil::Singleton< LocalServiceAdmin >::instance().


このクラス詳解は次のファイルから抽出されました: