• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            08年04月18日

            Posted on 2008-04-18 18:14 RichardHe 閱讀(189) 評論(2)  編輯 收藏 引用
            了解了通過模板來使用單件模式
            *.h
            template <typename T> class CEGUIEXPORT Singleton
            {
            protected:
                static T* ms_Singleton;

            public:
                Singleton( void )
                {
                    assert( !ms_Singleton );
                    ms_Singleton = static_cast<T*>(this);//這個this是指的什么???不能理解,誰能幫我說明下么?謝謝
                }
               ~Singleton( void )
                    {  assert( ms_Singleton );  ms_Singleton = 0;  }
                static T& getSingleton( void )
                    {  assert( ms_Singleton );  return ( *ms_Singleton );  }
                static T* getSingletonPtr( void )
                    {  return ( ms_Singleton );  }
            };
            使用如下
            class MyClass :public Singleton<MyClass>
            {
            public:
                void run();
            };
            *.cpp

            template MyClass* Singleton<MyClass>::ms_Singleton = NULL; ///注意,這里是Singleton構造函數.不是getSingleton方法
            //好像也可以用    template<typename T> T* Singleton<T>::ms_Singleton = NULL;
            //在使用它之前new一個對象
            new MyClass();
            MyClass::getSingleton().run();

            在CEGUI中為什么不設計如下呢??????????????????????????????
            emplate <class T> class  Singleton
            {
            protected:
                Singleton(){}
            public:
                
            static T& Instance()
                {
                    
            static T instance;
                    
            return instance;
                }
            };

            // Concrete singleton class, derived from Singleton<T>
            class ExampleSingleton: public Singleton<ExampleSingleton>
            {
                
            // so that Singleton<ExampleSingleton> can access the 
                
            // protected constructor
                friend class Singleton<ExampleSingleton>;

            protected:
                    ExampleSingleton(){}
            public:
                
            // This class's real functionalities
                void Write(){printf("Hello, World!");}
            };

            // use this singleton class
            ExampleSingleton::Instance().Write();

            Feedback

            # re: 08年04月18日  回復  更多評論   

            2008-04-18 18:25 by kun
            樓主啊`````我想加你的MSN,可以嗎?
            我們研究的進度是一樣的啊,剛好可以利用這個機會,加快我們兩個人的學習進度啊````

            # re: 08年04月18日  回復  更多評論   

            2008-04-18 18:29 by kun
            我的MSN : kun123456765@live.cn
            那個this是指 運行期的這個類的實例。

            posts - 94, comments - 138, trackbacks - 0, articles - 94

            Copyright © RichardHe

            久久精品国产亚洲AV忘忧草18| 久久精品国产91久久麻豆自制| 亚洲午夜久久久久久噜噜噜| 少妇久久久久久被弄高潮| 青草影院天堂男人久久| 2020久久精品亚洲热综合一本| 91精品国产乱码久久久久久| 亚洲精品乱码久久久久久蜜桃 | 国产一久久香蕉国产线看观看 | 亚洲综合久久综合激情久久| 国产欧美久久久精品影院| 亚洲国产精品久久久久网站| 亚洲第一极品精品无码久久| 理论片午午伦夜理片久久| 狠狠狠色丁香婷婷综合久久五月 | 国产精品免费看久久久香蕉| 无码久久精品国产亚洲Av影片| 久久综合九色欧美综合狠狠 | 草草久久久无码国产专区| 亚洲精品乱码久久久久久按摩| 久久99久久无码毛片一区二区| 国产精品久久久久久吹潮| 色狠狠久久综合网| 久久综合久久伊人| 久久久九九有精品国产| 精品久久久久久无码专区不卡| 亚洲愉拍99热成人精品热久久| 久久人人爽人人爽AV片| 大香网伊人久久综合网2020| 久久91精品国产91久久小草 | 久久丫忘忧草产品| 日日狠狠久久偷偷色综合免费| 国产精品成人99久久久久91gav| 久久精品国产精品青草app| 色婷婷综合久久久久中文一区二区| 久久婷婷五月综合97色直播| 久久婷婷色香五月综合激情| 亚洲人成电影网站久久| 久久午夜福利无码1000合集| 亚洲综合伊人久久综合| 精品蜜臀久久久久99网站|