CrossFramework Library

クラス テンプレート XBase::ExplicitSingleton< T >

#include <XBase/ExplicitSingleton.hpp>


template<typename T>
class XBase::ExplicitSingleton< T >

明示的に生成・解放できるシングルトン。

継承して使用します。
継承先のコンストラクタで SetInstance() を呼びデストラクタで UnsetInstance() を呼ぶようにしてください。
2つ以上インスタンス化させるとエラーになります。

// 例
class Manager : public ::XBase::ExplicitSingleton< Manager >
{
public:
    Manager()
    {
        SetInstance( *this );
    }
    ~Manager()
    {
        UnsetInstance();
    }
    int value()const { return 1; }
};
void func()
{
    // Managerが作成済みならこのようにアクセスできる
    return Manager::Instance().value();
}
XBase::ExplicitSingleton< T >に対する継承グラフ

すべてのメンバ一覧

アクセス
static T & Instance ()
 作成済みのインスタンスにアクセス。
static bool IsCreated ()
 作成済みならtrueを返す。

コンストラクタとデストラクタ
 ExplicitSingleton ()
 ~ExplicitSingleton ()

Protected メソッド

void SetInstance (T &)
 インスタンス化が終わったときに呼ぶ。
void UnsetInstance ()
 インスタンス化を解除したいときに呼ぶ。
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義