接續之前寫的
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前,完成MyClass2和MyClass1的建立和初始化
const struct MySingletonCons::Constructor MySingletonCons::Cons;