• <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>
            隨筆 - 31  文章 - 128  trackbacks - 0
            <2006年12月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(5)

            隨筆分類(38)

            隨筆檔案(31)

            收藏夾(4)

            College

            High School

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 55927
            • 排名 - 407

            最新評論

            • 1.?re: [yc]詳解link
            • 面試的時候面試官就問過我什么是編譯和鏈接,我說編譯就是把代碼文件生成目標文件,鏈接就是把目標文件生成可執(zhí)行文件,他說不對,又問我什么是動態(tài)鏈接,還問我預編譯都做什么處理。。。都在這里找到了答案!!!!
            • --王至乾
            • 2.?re: [yc]詳解link
            • @劉偉
              我是說博主,不是叫你啊
            • --溪流
            • 3.?re: [yc]詳解link
            • 誰是石老師,我不是哈@溪流
            • --劉偉
            • 4.?re: [yc]詳解link
            • 石老師?我是溪流~
            • --溪流
            • 5.?re: [yc]詳解link
            • 期待樓主下文啊,多謝樓主了
            • --劉偉

            閱讀排行榜

            評論排行榜



            發(fā)信人: shifan (學習浮云技術(shù)), 板面: C++
            標  題: 偽typeof
            發(fā)信站: 飄渺水云間 (Tue Dec 19 16:38:45 2006), 轉(zhuǎn)信
             1 /*
             2 用標準C++實現(xiàn)typeof是不可能的
             3 這個是我寫的一個approached typeof
             4 所有需要被靜態(tài)反射出來的類型必須先用DECL_TYPE注冊
             5 模板如果僅僅帶有1個參數(shù)可以用DECL_TEMPLATE_1注冊
             6 多個參數(shù)的模板還不支持。。
             7 主要是沒想好編碼
             8 
             9 總共能注冊64個類型
            10 可以通過MAX_TYPE_NUMBER設(shè)置
            11 
            12 支持的模板嵌套層數(shù)大約為32 / log2(MAX_TYPE_NUMBER)
            13 MAX_TYPE_NUMBER必須為2的整次數(shù)冪
            14 */
            15 namespace my_typeof
            16 {
            17 
            18   const int MAX_TYPE_NUMBER = 64;
            19 
            20   template <int N>
            21   struct dummy
            22   {
            23     int a[N];
            24   };
            25 
            26 
            27   template <int N, typename Arg1>
            28   struct select_by_number_1;
            29 
            30   template <int N>
            31   struct select_by_number
            32   {
            33     typedef typename select_by_number_1<% MAX_TYPE_NUMBER, typename
            34 select_by_number</ MAX_TYPE_NUMBER>::type>::type type;
            35   };
            36 
            37 
            38   template <typename T>
            39   struct number_of
            40   {
            41     static const int v = sizeof(generic_f(*(T*)0)) / sizeof(int);
            42   };
            43 
            44 
            45 #define DECL_TYPE(T, N) \
            46   namespace my_typeof{  \
            47   template<>\
            48   struct select_by_number<N> \
            49   {\
            50     typedef T type;\
            51   };\
            52   dummy <N> generic_f(const T&);}
            53 
            54 
            55 #define DECL_TEMPLATE_1(T, N) \
            56   namespace my_typeof{        \
            57   template<typename Arg1>\
            58   struct select_by_number_1<N, Arg1>\
            59   {\
            60     typedef T<Arg1> type;\
            61   };\
            62   template <typename Arg1>\
            63   dummy<+ number_of<Arg1>::v * MAX_TYPE_NUMBER > generic_f(const T<Arg1>&);}
            64 
            65 
            66 
            67 #define TYPE_OF(x) my_typeof::select_by_number<sizeof(my_typeof::generic_f(x)) /
            68 sizeof (int)>::type
            69 
            70 }
            71 
            72 
            73 //sample
            74 #include <iostream>
            75 #include <vector>
            76 #include <list>
            77 
            78 
            79 DECL_TYPE(int1);
            80 DECL_TEMPLATE_1(std::vector, 2);
            81 DECL_TEMPLATE_1(std::list, 3);
            82 DECL_TYPE(double4)
            83 
            84 using namespace std;
            85 int main(intchar*[])
            86 {
            87   vector<list<vector<list<double> > > > v1;
            88   TYPE_OF(v1) v2;
            89   v1 = v2;
            90   return 0;
            91 }
            92 
            93 


            --
            You well 撒法!You well all 撒法!

            ※ 內(nèi)容修改:·shifan 于 Dec 21 14:21:57 修改本文內(nèi)容·[FROM: shifan]
            ※ 來源:·飄渺水云間 freecity.cn·[FROM: shifan]
            posted on 2006-12-21 14:29 shifan3 閱讀(2646) 評論(8)  編輯 收藏 引用 所屬分類: templateC++

            FeedBack:
            # re: 偽typeof 2006-12-22 14:10 yayv
            C++標準中有RTTI阿,為什么不考慮下?  回復  更多評論
              
            # re: 偽typeof 2006-12-22 16:07 小山日志
            多個參數(shù)模板可不可以參考Loki里的Typelist來做,Template編程偶不熟,只是提議。

            to yayv:C++的RTTI是不能運行時創(chuàng)建對象的,shifan的題目改為“C++的模擬反射機制”合適些。  回復  更多評論
              
            # re: 偽typeof 2007-01-12 13:58 linghuchong
            寒,一開始以為是某些編譯器的類似sizeof的typeof關(guān)鍵字,結(jié)果發(fā)現(xiàn)不是……

            不過既然是動態(tài)的為什么要加這么多限制呢?  回復  更多評論
              
            # re: 偽typeof 2007-01-12 14:09 Francis Arcanum
            @linghuchong
            誰說是動態(tài)的?  回復  更多評論
              
            # re: [yc]偽typeof 2007-11-09 17:11 liuhs
            寫的不錯!  回復  更多評論
              
            # re: [yc]偽typeof 2008-07-22 22:51 xiaowei
            baidu 到 shifan大神的blog,進來膜拜一下  回復  更多評論
              
            # re: [yc]偽typeof 2009-01-07 17:17 lsxx
            我也在考慮這個,要是標準里有就好了  回復  更多評論
              
            # re: [yc]偽typeof[未登錄] 2011-12-31 00:40 春秋十二月
            模板功底的確不錯  回復  更多評論
              
            久久精品国产亚洲AV影院| 久久精品中文字幕一区| 国产精品久久新婚兰兰| 精品国产日韩久久亚洲| 欧洲精品久久久av无码电影 | 久久被窝电影亚洲爽爽爽| 亚洲欧美日韩精品久久| 色欲综合久久躁天天躁| 久久精品无码午夜福利理论片| 久久精品成人国产午夜| 亚洲国产成人乱码精品女人久久久不卡 | 久久久久久精品成人免费图片| 狠狠色婷婷久久一区二区三区| 国产成人综合久久久久久| 久久人人爽人人人人爽AV | 久久久这里有精品| 久久综合久久综合久久综合| 婷婷久久五月天| 婷婷综合久久中文字幕| 青青草原精品99久久精品66| 亚洲国产成人精品91久久久 | 久久综合狠狠色综合伊人| 人人狠狠综合久久亚洲高清| 久久精品国产精品青草app| 久久久久亚洲AV无码专区首JN | 久久精品成人欧美大片| 久久中文字幕无码专区| 亚洲国产精品一区二区久久| 久久99国产精品尤物| 亚洲精品乱码久久久久久自慰| 久久毛片一区二区| 久久国产成人亚洲精品影院| 亚洲一区中文字幕久久| 青青草原综合久久| 大香网伊人久久综合网2020| 久久99国产精品99久久| 久久九九青青国产精品| 99精品久久精品| 国产精品内射久久久久欢欢 | 一本一道久久综合狠狠老| 久久天天躁夜夜躁狠狠|