• <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, 評論 - 41, 引用 - 0
            數(shù)據(jù)加載中……

            vc2005無法編譯通過《從集合中枚舉子集》中的代碼

                    前些日子整理代碼,發(fā)現(xiàn)《從集合中枚舉子集》中的代碼無法在VC2005上編譯通過。當時只在DevC++上編譯,沒有考慮VC2005gcc的區(qū)別。仔細查找,問題出在CSetIterAgent的構(gòu)造函數(shù)的參數(shù)上。下面是一段簡化的代碼,會出現(xià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)的錯誤如下
            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下可以通過。如果把代碼
            CTest(const std::vector<Type>& set, CTest::Data data=CTest::A){};
            改為
                CTest(const std::vector<Type>& set, CTest<Type>::Data data=CTest<Type>::A){};
            問題同樣。如果改成下面形式
                CTest(const std::vector<Type>& set){};
            則vc2005和gcc都可以通過。

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

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

            久久99精品国产自在现线小黄鸭| 久久久久久毛片免费看| 色偷偷久久一区二区三区| 97精品伊人久久久大香线蕉| 国产国产成人精品久久| 久久精品国产亚洲Aⅴ香蕉| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久伊人精品青青草原高清| 99久久精品国产高清一区二区 | 51久久夜色精品国产| 一级A毛片免费观看久久精品| 久久综合香蕉国产蜜臀AV| 精品无码久久久久久久动漫| 久久亚洲AV成人无码国产| 女同久久| 精品久久国产一区二区三区香蕉| 无码精品久久久天天影视| 亚洲欧美日韩精品久久亚洲区 | 久久线看观看精品香蕉国产| 亚洲精品tv久久久久| 国产激情久久久久影院| 日韩乱码人妻无码中文字幕久久| 久久久中文字幕日本| 成人精品一区二区久久| 久久亚洲春色中文字幕久久久| 性做久久久久久久久老女人| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 人人狠狠综合久久88成人| AV无码久久久久不卡网站下载| 久久久久一区二区三区| 国产精品无码久久久久久| 亚洲级αV无码毛片久久精品 | 97精品伊人久久大香线蕉app| 久久久国产亚洲精品| 国产精品欧美亚洲韩国日本久久 | 久久天天躁狠狠躁夜夜不卡| 久久99精品国产麻豆宅宅| 久久99国产精一区二区三区| 91精品国产高清91久久久久久| 国产精品美女久久久久久2018| 999久久久无码国产精品|