• <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>
            隨筆 - 51, 文章 - 1, 評(píng)論 - 41, 引用 - 0
            數(shù)據(jù)加載中……

            vc2005無(wú)法編譯通過(guò)《從集合中枚舉子集》中的代碼

                    前些日子整理代碼,發(fā)現(xiàn)《從集合中枚舉子集》中的代碼無(wú)法在VC2005上編譯通過(guò)。當(dāng)時(shí)只在DevC++上編譯,沒(méi)有考慮VC2005gcc的區(qū)別。仔細(xì)查找,問(wèn)題出在CSetIterAgent的構(gòu)造函數(shù)的參數(shù)上。下面是一段簡(jiǎn)化的代碼,會(huì)出現(xiàn)同樣的問(wèn)題。
            #include <vector>
            template
            <typename Type>
            class CTest
            {
            public:
                enum Data
                {
                    A,
                    B
                };
            public:
                CTest(
            const std::vector<Type>& set, CTest::Data data=CTest::A){};
                ~CTest(){};
            };

            int main(void)
            {
                std::vector
            <int> set;
                CTest
            <int> test(set);
                CTest
            <int>::Data a = CTest<int>::A;
                return 
            0;
            }
            用vc2005編譯出現(xiàn)的錯(cuò)誤如下
            1>d:\work\c++\vc\qt\qt\main.cpp(12) : warning C4346: 'CTest<Type>::Data' : dependent name is not a type
            1>        prefix with 'typename' to indicate a type
            1>        d:\work\c++\vc\qt\qt\main.cpp(14) : see reference to class template instantiation 'CTest<Type>' being compiled
            1>d:\work\c++\vc\qt\qt\main.cpp(12) : error C2226: syntax error : unexpected type 'std::vector<Type>'
            1>d:\work\c++\vc\qt\qt\main.cpp(12) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
            1>d:\work\c++\vc\qt\qt\main.cpp(12) : fatal error C1903: unable to recover from previous error(s); stopping compilation
            1>        d:\work\c++\vc\qt\qt\main.cpp(19) : see reference to class template instantiation 'CTest<Type>' being compiled
            1>        with
            1>        [
            1>            Type=int
            1>        ]
            但在gcc下可以通過(guò)。如果把代碼
            CTest(const std::vector<Type>& set, CTest::Data data=CTest::A){};
            改為
                CTest(const std::vector<Type>& set, CTest<Type>::Data data=CTest<Type>::A){};
            問(wèn)題同樣。如果改成下面形式
                CTest(const std::vector<Type>& set){};
            則vc2005和gcc都可以通過(guò)。

                     有一句忘了出處的名言:“我知道萬(wàn)有引力是怎么工作的,但我不知道它為什么這樣工作”。現(xiàn)在我也知道怎樣寫(xiě)會(huì)有問(wèn)題,但我不知道為什么會(huì)有這樣的問(wèn)題。希望能和大家多多交流,我的郵箱lemene@sina.com

            posted on 2007-11-09 16:54 lemene 閱讀(362) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久精品国产亚洲av影院| 久久露脸国产精品| 久久久久久久久久久久久久| 久久久久久a亚洲欧洲aⅴ | 91精品国产9l久久久久| 久久精品国产男包| 久久久久久伊人高潮影院| 国产精品一区二区久久精品涩爱| 亚洲一区精品伊人久久伊人| 国产亚洲精午夜久久久久久| 精品久久久久久99人妻| 久久精品三级视频| 久久天天婷婷五月俺也去| 久久久久亚洲av综合波多野结衣| 久久精品国产亚洲AV不卡| 亚洲精品美女久久777777| 久久久噜噜噜www成人网| 久久99热只有频精品8| 精品久久久久久久| 精品久久久久久国产免费了| 久久无码一区二区三区少妇| 无码超乳爆乳中文字幕久久| 国产精品久久久久久久久| 国产精品99久久不卡| 2021久久精品免费观看| 精品无码久久久久久尤物| 亚洲国产成人久久精品影视| 久久这里只有精品视频99| 亚洲欧洲日产国码无码久久99| 国产精品久久久久久影院| 久久久国产一区二区三区| 亚洲国产另类久久久精品小说| 久久青草国产精品一区| 免费精品国产日韩热久久| 久久精品蜜芽亚洲国产AV| 精品欧美一区二区三区久久久| 狠狠色婷婷久久综合频道日韩 | 国产亚洲精午夜久久久久久| 久久天天躁狠狠躁夜夜不卡| 精品久久久久久久久午夜福利| 久久精品亚洲欧美日韩久久|