以C++11為例,C++17後有更簡潔的寫法,但尚未驗證

C++沒有C#的static class或static constructor,但可以實現相同的效果,
雖然閱讀上會覺得很多餘(甚至會覺得很怪),不夠簡潔

接續前一篇,並參考網頁
https://stackoverflow.com/questions/16284629/undefined-reference-to-static-variable-c
https://stackoverflow.com/questions/272900/undefined-reference-to-static-class-member
https://stackoverflow.com/questions/5803953/what-is-a-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

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

    GNAySolution

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