• <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++ && keyWordSpotting

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              11 Posts :: 0 Stories :: 4 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(9)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            積分與排名

            • 積分 - 7242
            • 排名 - 1369

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            ?????? 初學(xué)函數(shù)模版,一個(gè)“ bug” 讓俺郁悶了一番,想了一個(gè)小時(shí)都沒(méi)有想出所以然。雖求助于網(wǎng)絡(luò),發(fā)貼于 vckbase 。

            ?????? 問(wèn)題已經(jīng)解決,帖子摘要如下:

            ??????: 函數(shù)模版問(wèn)題,為什么不能采用多文件方式。?
            ??????: 郭晨 ( 書童)
            所屬論壇: C++ 論壇
            本帖分?jǐn)?shù): 0
            回復(fù)次數(shù): 4
            發(fā)表時(shí)間: 2006-8-12 19:09:50
            正文內(nèi)容:
            1

            #include <fstream>
            #include <iostream>
            using namespace std;
            template<class Type >
            Type min(Type a, Type b)
            {
            ????return a < b ? a : b;
            }

            int main(int argc, char* argv[])
            {
            ????cout << min(10, 20) << endl;
            ????return 0;
            }

            可以編譯成功,運(yùn)行得到正確結(jié)果。

            2
            )多文件方式

            ///////////////////////main.cxx
            #include "min.h"
            #include <fstream>
            #include <iostream>
            using namespace std;
            int main(int argc, char* argv[])
            {
            ????cout << min(10, 20) << endl;
            ????return 0;
            }
            ///////////////////////min.h
            #ifndef _MIN_GHH_
            #define _MIN_GHH_??1

            template<class Type >
            Type min(Type a, Type b);

            #endif

            //////////////////////min.cxx
            #include "min.h"

            template<class Type >
            Type min(Type a, Type b)
            {
            ????return a < b ? a : b;
            }

            編譯報(bào)告錯(cuò)誤:
            Linking...
            20060812_function_template.obj : error LNK2001: unresolved external symbol "int __cdecl min(int,int)" (?min@@YAHHH@Z)
            Debug/20060812_function_template.exe : fatal error LNK1120: 1 unresolved externals
            Error executing link.exe.

            20060812_function_template.exe - 2 error(s), 0 warning(s)

            ////////////////////////////////////
            問(wèn)題:為什么會(huì)出現(xiàn)這種問(wèn)題,如何解決?盼賜教。
            最新修改:2006-8-12 19:41:10

            ?

            回復(fù)人: newgun ( 書童)?

            2006-8-12 19:34:29 ( 得分: 10 )?

            Re: 函數(shù)模版問(wèn)題,為什么不能采用多文件方式。
            c++標(biāo)準(zhǔn)中規(guī)定可以采用分離的編譯模式,只需要通過(guò)在模板定義中的關(guān)鍵字template 之前加上關(guān)鍵字export 來(lái)聲明一個(gè)可導(dǎo)出的函數(shù)模板當(dāng)函數(shù)模板,被導(dǎo)出時(shí)我們就可以在任意程序文本文件中使用模板的實(shí)例如:
            ??// model2.h
            //
            分離模式: 只提供模板聲明
            template <typename Type> Type min( Type t1, Type t2 );
            // model2.C
            // the template definition
            export template <typename Type>????//export
            關(guān)鍵字
            Type min( Type t1, Type t2 ) { /* ...*/ }

            ????
            但是好像現(xiàn)在的好多編譯器如vc7都還不支持這種結(jié)構(gòu),所以最好把模板的聲明
            和定義都放在頭文件里

            ?????

            ?????? 感受:得到網(wǎng)友提示,真有一種“柳暗花明又一村”之感,這個(gè)所謂 bug 是這么簡(jiǎn)單又是這么不簡(jiǎn)單!

            ?????? 一直認(rèn)為應(yīng)該是自己的錯(cuò)誤,但沒(méi)想到是編譯器和標(biāo)準(zhǔn)兼容性的問(wèn)題??磥?lái)自己的思維習(xí)慣應(yīng)該有所改變了。應(yīng)該多角度分析問(wèn)題,而不能一味的想當(dāng)然。

            ?????? Ps :自己也應(yīng)該考慮嘗試一個(gè)新的 C++ 編譯器了,老用 vc ,感覺學(xué)的標(biāo)準(zhǔn) C++ 都不純,就象這次事件一樣。

            posted on 2006-08-12 20:32 keyws 閱讀(646) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 程序調(diào)試

            Feedback

            # 關(guān)于模板的分離編譯的實(shí)現(xiàn) 2008-12-22 08:09 云川
            其實(shí)借助于現(xiàn)有的編譯器模板是可以采用分離編譯的方法的,只不過(guò)需要一些技巧。常用的方法是將在頭文件的“×××.h”的末尾,include"×××.cpp"并確保文件編譯且僅編譯一次。比如:
            ///////////////////////main.cpp
            #include "min.h"
            #include <fstream>
            #include <iostream>
            using namespace std;
            int main(int argc, char* argv[])
            {
            cout << min(10, 20) << endl;
            return 0;
            }
            ///////////////////////min.h
            #pragma once

            template<class Type >
            Type min(Type a, Type b);

            include"min.cpp"

            //////////////////////min.cpp
            #ifndef MIN_CPP
            #define MIN_CPP

            #include "min.h"

            template<class Type >
            Type min(Type a, Type b)
            {
            return a < b ? a : b;
            }

            #endif  回復(fù)  更多評(píng)論
              

            久久人与动人物a级毛片| 久久只这里是精品66| www.久久精品| 看全色黄大色大片免费久久久| 狠狠色伊人久久精品综合网| 18禁黄久久久AAA片| 久久久精品国产sm调教网站| 99精品伊人久久久大香线蕉| 97精品国产97久久久久久免费| 2020久久精品国产免费| 久久人人爽人人爽人人片AV不 | 999久久久免费国产精品播放| 亚洲国产成人精品久久久国产成人一区二区三区综 | AV无码久久久久不卡蜜桃| 狠狠色丁香久久婷婷综合五月| 看全色黄大色大片免费久久久 | 婷婷久久综合九色综合绿巨人| 精品久久久无码人妻中文字幕豆芽| 久久久久亚洲精品天堂久久久久久| 久久亚洲精品成人AV| 热99RE久久精品这里都是精品免费 | 久久99国产精品成人欧美| 亚洲国产成人久久综合一| 久久国产乱子精品免费女| 人妻少妇精品久久| 99久久精品免费观看国产| 久久99国产综合精品免费| 欧美一区二区久久精品| 99精品久久久久久久婷婷| 久久免费精品视频| 国产69精品久久久久777| 亚洲AV乱码久久精品蜜桃| 久久亚洲精品无码VA大香大香| 久久精品无码一区二区app| 精品国产乱码久久久久久浪潮| 女人香蕉久久**毛片精品| 精品久久久久久国产| 一本色道久久88加勒比—综合| 国产成人精品久久亚洲高清不卡 | 亚洲国产精品久久久久久| 精品久久人人妻人人做精品|