#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] |
1.6.3