以C++11為例,C++17後有更簡潔的寫法,但尚未驗證
C++沒有C#的static class或static constructor,但可以實現相同的效果,
雖然閱讀上會覺得很多餘(甚至會覺得很怪),不夠簡潔
接續前一篇,並參考網頁
namespace MyNamespace
{
class MyClass
{
private:
static int _staticVariable1;
public:
static void Initialize()
{
_staticVariable1 = 10;
}
};
int MyClass::_staticVariable1 = 0; //少了這行編譯時會出現undefined reference錯誤
class MyClassStaticCons
{
struct Constructor
{
Constructor() //初始化MyClass
{
//視實務需要,初始化變數或物件,也能呼叫多道方法,但都必須是public
MyClass::Initialize();
}
};
const static Constructor Cons;
};
//程式啟動時,在進入main前,完成MyClass的建立和初始化
const struct MyClassStaticCons::Constructor MyClassStaticCons::Cons;
}
//在main裡面即可用MyNamespace::MyClass::
//去使用MyClass