#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 オブジェクト. |
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()); // が唯一のインスタンスを得る唯一の方法
typedef ::coil::Mutex coil::Singleton< SingletonClass >::Mutex |
typedef SingletonClass* coil::Singleton< SingletonClass >::SingletonClassPtr |
coil::Singleton< SingletonClass >::Singleton | ( | ) | [inline, protected] |
コンストラクタ
coil::Singleton< SingletonClass >::~Singleton | ( | ) | [inline, protected] |
デストラクタ
デストラクタ。
static SingletonClass& coil::Singleton< SingletonClass >::instance | ( | ) | [inline, static] |
インスタンス生成
インスタンスを生成する。
Singleton< SingletonClass >::SingletonClassPtr coil::Singleton< SingletonClass >::m_instance [inline, static, protected] |
SingletonClass オブジェクト.
Singleton< SingletonClass >::Mutex coil::Singleton< SingletonClass >::m_mutex [inline, static, protected] |