• <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>

            可冰

            冰,是沉睡著的水......

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              37 隨筆 :: 5 文章 :: 94 評(píng)論 :: 0 Trackbacks
            前天碰到一個(gè)問(wèn)題,當(dāng)時(shí)想著挺納悶的,不知道是什么原因.對(duì)"不能在模板聲明之外使用類型名稱"這樣的提示你會(huì)想到是什么?我在無(wú)意中按F1鍵看到MSDN中的描述才明白是typename關(guān)鍵字用錯(cuò)了,是看它的英文描述才知道的:"typename cannot be used outside a template declaration".真想不到typename會(huì)翻譯為類型名稱.看來(lái),以后有莫名其妙的錯(cuò)誤還是得看英文的幫助文檔啊,不過(guò)最好一開(kāi)始就有英文版的VS.NET.
            以下是具體的描述:


            namespace?code
            {

            enum?CodeType?{?UTF_8,?UNICODE?}
            ;

            template
            <?CodeType?srcT,?CodeType?desT?>

            struct?ConvertType{};

            template
            <>

            struct?ConvertType?<?UTF_8,?UNICODE?>
            {
            ????typedef?
            char
            ?srcType;
            ????typedef?wchar_t?desType;
            }
            ;

            template
            <?CodeType?srcT,?CodeType?desT?>

            struct?Convert?{};

            template
            <>

            struct?Convert<?UTF_8,?UNICODE?>
            {
            ????
            //error?C2899:?不能在模板聲明之外使用類型名稱

            ????typedef?typename?ConvertType<?UTF_8,?UNICODE?>::srcType?srcType;????//!
            ????typedef?typename?ConvertType<?UTF_8,?UNICODE?>::desType?desType;????//!
            }
            ;

            }
            ?//namespace?code


            /*
            這里根本不需要typename.
            typename除用在模板聲明中外,只能用于說(shuō)明模板類的成員是一個(gè)類型.
            例如:
            template?class?X?{};

            //?Another?way
            template?struct?X?{
            ????typedef?double?DoubleType;

            ????typename?X::DoubleType?a;???//?T::A?is?a?type
            };

            而如果不是模板類,則不能用typename.這時(shí),它并不是多余的,而是一定不能要的.
            例如:
            template<>?struct?X?>?{
            ????typename?X::DoubleType?a;????//Error!?X?is?not?a?generic?class
            ????X::DoubleType?b;????????//OK!
            };

            我前面的代碼也是這樣的情況,ConvertType已經(jīng)是一個(gè)具體的類了,不要是模板類,所以ConvertType::srcType前不能加typename.
            */
            posted on 2005-09-24 15:49 可冰 閱讀(9048) 評(píng)論(6)  編輯 收藏 引用 所屬分類: C++

            評(píng)論

            # re: error C2899: 不能在模板聲明之外使用類型名稱 ?!! 2006-03-02 17:01 yajun
            這是VC得一個(gè)bug, 再VC7.1以后就可以用了。
            你沒(méi)有用錯(cuò),是微軟錯(cuò)了。  回復(fù)  更多評(píng)論
              

            # re: error C2899: 不能在模板聲明之外使用類型名稱 ?!! 2006-03-02 22:57 可冰
            是嗎?
            我沒(méi)有在其它編譯器下測(cè)試,只是看了它的錯(cuò)誤說(shuō)明,我還以為真是這樣的呢.
            我完了再試一下吧.
            謝謝了!  回復(fù)  更多評(píng)論
              

            # re: error C2899: 不能在模板聲明之外使用類型名稱 ?!! 2006-03-02 23:08 可冰
            看來(lái)還是知識(shí)不過(guò)硬啊!
              回復(fù)  更多評(píng)論
              

            # re: error C2899: 不能在模板聲明之外使用類型名稱 ?!! 2006-09-23 22:55 x
            這個(gè)也不能算bug 只是vc60附帶的編譯器對(duì)標(biāo)準(zhǔn)支持不夠 到其后的版本ms碰到“正確”的語(yǔ)句會(huì)說(shuō)明這個(gè)市為了遵從標(biāo)準(zhǔn) 要你寫(xiě)個(gè)typename  回復(fù)  更多評(píng)論
              

            # re: error C2899: 不能在模板聲明之外使用類型名稱 ?!! 2008-01-03 12:12 yangmi0313@126.com
            我用VS2005怎么也有這個(gè)錯(cuò)誤。  回復(fù)  更多評(píng)論
              

            # re: error C2899: 不能在模板聲明之外使用類型名稱 ?!! 2015-09-29 15:45 booirror
            不知道為什么,我用vs2013都出現(xiàn)這個(gè)問(wèn)題,我覺(jué)得代碼沒(méi)問(wèn)題。  回復(fù)  更多評(píng)論
              

            久久丫精品国产亚洲av不卡| 久久免费视频6| 成人免费网站久久久| 91秦先生久久久久久久| 亚洲国产精品无码久久久久久曰 | 思思久久好好热精品国产| 亚洲国产婷婷香蕉久久久久久| 婷婷久久香蕉五月综合加勒比| 99精品伊人久久久大香线蕉| 亚洲女久久久噜噜噜熟女| 久久精品免费大片国产大片| 人妻无码久久一区二区三区免费| 久久激情五月丁香伊人| 久久人人爽人人爽人人AV东京热| 久久久久国产成人精品亚洲午夜| 国产精品美女久久久久| 国产成人无码精品久久久性色 | 久久久久久国产精品免费免费 | 久久中文娱乐网| 亚洲AV乱码久久精品蜜桃| 久久亚洲中文字幕精品一区四| 青青青国产成人久久111网站| 欧美精品乱码99久久蜜桃| 久久久久亚洲av成人无码电影| 国产日产久久高清欧美一区| 久久99精品国产自在现线小黄鸭| 三级片免费观看久久| 久久影视综合亚洲| 午夜精品久久久久9999高清| 久久av免费天堂小草播放| 国产精品欧美久久久久无广告| 9999国产精品欧美久久久久久| 久久青青草原国产精品免费| 久久精品国产91久久麻豆自制| 999久久久免费精品国产| 韩国无遮挡三级久久| 九九久久精品无码专区| 久久精品国产WWW456C0M| 亚洲va久久久久| 久久久婷婷五月亚洲97号色| 久久精品国产亚洲网站|