• <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>
            幽幽
             
            posts - 51,  comments - 28,  trackbacks - 0
              
            轉(zhuǎn)自 http://www.shnenglu.com/Zezese/archive/2010/07/25/121247.html?opt=admin

            1 
              2 
              3 
              4 
              5 template <class R, class P1, class P2>
              6 class IDelegate
              7 {
              8 public:
              9     virtual R Invoke(P1, P2) = 0;
             10 };
             11 
             12 
             13 template <class T, class R, class P1, class P2>
             14 class CDelegate : public IDelegate<R, P1, P2>
             15 {
             16 protected:
             17 
             18     typedef R (T::*pfnHandle)(P1, P2);
             19 
             20     const pfnHandle m_pfn;
             21 
             22     T* const m_pThis;
             23 
             24 public:
             25 
             26     CDelegate(T* const pThis, const pfnHandle pfn)
             27         :m_pThis(pThis), m_pfn(pfn)
             28     {
             29         if (m_pThis == NULL || m_pfn == NULL)
             30         {
             31             throw;
             32         } 
             33     }
             34 
             35     virtual R Invoke(P1 p1, P2 p2)
             36     {
             37         return (m_pThis->*m_pfn)(p1, p2);
             38     }
             39 
             40 };
             41 
             42 class CDelegateSource
             43 {
             44 public:
             45     CDelegateSource()
             46         : m_lpCallBack(NULL)
             47     {
             48     }
             49 
             50     void SetCallBack(IDelegate<boolintint>* newVal) 
             51     { 
             52         m_lpCallBack = newVal; 
             53     }
             54 
             55     void DoSomething()
             56     {
             57         for (int i = 0; i < 10; i++)
             58         {   
             59             if (m_lpCallBack != NULL)
             60             {
             61                 m_lpCallBack->Invoke(i, i * i);
             62             }
             63         }
             64     }
             65 
             66 private:
             67 
             68     IDelegate<boolintint>* m_lpCallBack;
             69 
             70 };
             71 
             72 class CDelegateTester
             73 {
             74 private:
             75 
             76     bool OnCallBack(int nParam1, int nParam2)
             77     {
             78         printf("OnCallBack -> nParam1:%d, nParam2:%d\r\n", nParam1, nParam2);
             79 
             80         return true;
             81     }
             82 
             83     CDelegate<CDelegateTester, boolintint> m_OnCallBack;
             84 
             85 public:
             86 
             87     CDelegateTester()
             88         : m_OnCallBack(this, OnCallBack)
             89     {
             90     }
             91 
             92     void Execute()
             93     {
             94         CDelegateSource src;
             95         src.SetCallBack(&m_OnCallBack);
             96         src.DoSomething();
             97     }
             98 };
             99 
            100 void main()
            101 {
            102     CDelegateTester Tester;
            103     Tester.Execute();
            104 
            105     getchar();
            106 }
            107 
            posted on 2010-10-04 09:10 幽幽 閱讀(825) 評(píng)論(0)  編輯 收藏 引用

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(6)

            隨筆分類(35)

            隨筆檔案(51)

            文章分類(3)

            文章檔案(3)

            相冊(cè)

            我的鏈接

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            四虎国产精品免费久久| 亚洲精品WWW久久久久久| 亚洲午夜久久久久久久久电影网| 久久久高清免费视频| 久久免费精品视频| 狠狠综合久久AV一区二区三区| 日韩久久无码免费毛片软件| 中文字幕亚洲综合久久菠萝蜜| 中文字幕乱码人妻无码久久| 成人国内精品久久久久影院| 久久伊人精品一区二区三区| 久久精品夜色噜噜亚洲A∨ | 久久综合鬼色88久久精品综合自在自线噜噜 | 伊人色综合久久天天网| 久久国产高潮流白浆免费观看| 久久精品国产欧美日韩| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久综合九色综合97_久久久| 欧美粉嫩小泬久久久久久久| 久久91精品国产91久久小草| 99久久免费国产特黄| 欧美日韩精品久久久久| 国产成人久久精品一区二区三区| 亚洲色婷婷综合久久| 久久本道久久综合伊人| 久久亚洲高清综合| 成人久久久观看免费毛片| 久久久久亚洲AV片无码下载蜜桃| 18禁黄久久久AAA片| 国产精品激情综合久久 | 中文字幕无码久久人妻| 精品人妻伦九区久久AAA片69 | 久久久无码精品亚洲日韩软件| 国内精品久久久久| 久久婷婷五月综合色高清| 国产亚洲色婷婷久久99精品| 大香伊人久久精品一区二区| 午夜肉伦伦影院久久精品免费看国产一区二区三区| 久久99精品久久久久婷婷| 国产69精品久久久久9999APGF| 热久久视久久精品18|