接續之前寫的
C++的friend class
C++物件的static和singleton

如果程式內有多個singleton classes,都要各自設計singleton constructor,感覺很麻煩

而且只知道程式啟動時,在進入main前,singleton classes都會建立和初始化,

但不知道也沒去控制classes初始化時機的先後順序,感覺對自己程式的掌握度不足

還好只要利用friend class,讓singleton classes都有共同的好碰友,就能解決這個問題

範例如下

//MyClass1.h
class MyClass1
{
    friend class MySingletonCons;

    private:
        static void Initialize()
        {
            //
        }
    public:
        static void DoSomething();
};

//MyClass2.h
class MyClass2
{
    friend class MySingletonCons;

    private:
        static void Initialize()
        {
            //
        }
    public:
        static void DoSomething();
};

//MySingletonCons.h
class MySingletonCons
{
    struct Constructor
    {
        Constructor() //初始化classes
        {
            //視實務需要,初始化變數或物件,也能呼叫多道方法,不用是public
            //自行控制和調整先後順序,統一管理
            MyClass2::Initialize();
            MyClass1::Initialize();
        }
    };

    const static Constructor Cons;
};

//程式啟動時,在進入main前,完成MyClass2MyClass1的建立和初始化
const struct MySingletonCons::Constructor MySingletonCons::Cons;

創作者介紹
創作者 GNAySolution 的頭像
Yang

GNAySolution

Yang 發表在 痞客邦 留言(0) 人氣( 1 )