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

            luqingfei@C++

            為中華之崛起而崛起!
            兼聽則明,偏聽則暗。

            [轉] VC6不支持模板函數在cpp文件中的實現

             例如:
            //myHeader.h
            #include <iostream.h>
            template 
            <class T>
            class A
            {
                  
            public:
                  A();
                  T 
            &max(const T &,const T &const;
            };
            template 
            <class T> T &A<T>::max(const T &a,const T &b)
            {
                
            return a<b?b:a;
            }


            //main.cpp

            #include <iostream.h>
            #include “myHeader.h“

            main()
            {
                A
            <int>  *cls=new A<int>();
                 
            int  a=100;
                 
            int  b=200;
                 cout
            <<cls->max(a,b)<<endl;
                 
            return 0;
            }


            按照上面的格式就可以執行。如果把class A的函數max的實現從頭文件中拿出來放在一個cpp文件中
            ,則會產生錯誤,代碼如下:
            //myHeader.h

            #include <iostream.h>
            template 
            <class T>
            class A
            {
                  
            public:
                  A();
                  T 
            &max(const T &,const T &const;
            };
            //classA.cpp
            #include “myHeader.h“
            template 
            <class T> T &A<T>::max(const T &a,const T &b)
            {
                
            return a<b?b:a;
            }


            //main.cpp

            #include <iostream.h>
            #include “myHeader.h“

            main()
            {
                A
            <int>  *cls=new A<int>();
                 
            int  a=100;
                 
            int  b=200;
                 cout
            <<cls->max(a,b)<<endl;
                 
            return 0;
            }


            這時候就會出錯,原因就是VC6不支持模板函數在cpp文件中的實現。解決的辦法是把其實現放在頭文件中,
            不一定放在定義類的頭文件中,可以放在獨立的頭文件中。
            注意:其實根據實質,也可以把模板函數的實現放在cpp文件中,但是要把cpp文件包含在調用該模板函數的
            文件中。
            代碼如下:
            //myHeader.h

            #include <iostream.h>

            template 
            <class T>class A
            {
            public:
             A();
             
            const T& max(const T&,const T&);
             
            };
            //classA.cpp
            #include <iostream.h>
            #include 
            "myHeader.h"
            template 
            <class T>const T &A<T>::max(const T &a,const T &b)
            {
             
            return a<b?b:a;
            }
            template 
            <class T>A<T>::A()
            {
             cout
            <<"constructor!"<<sizeof(T)<<endl;
            }


            //main.cpp

            #include "myHeader.h"
            #include 
            "classA.cpp"
            #include 
            <iostream.h>
            main()
            {
             A
            <int> *cls=new A<int>();
             
            int a=100;
             
            int b=100;
             A
            <double> *d=new A<double>();
             
            double d1=100.2;
             
            double d2=200.2;
             cout
            <<cls->max(a,b)<<endl;
             cout
            <<d->max(d1,d2)<<endl;
             
            return 0;
            }

            posted on 2009-02-17 12:51 luqingfei 閱讀(495) 評論(0)  編輯 收藏 引用 所屬分類: C++基礎

            導航

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            統計

            留言簿(6)

            隨筆分類(109)

            隨筆檔案(105)

            Blogers

            Game

            Life

            NodeJs

            Python

            Useful Webs

            大牛

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久本道久久综合伊人| 欧美午夜精品久久久久久浪潮| 国内精品久久国产| 久久人人添人人爽添人人片牛牛| 久久亚洲精品国产精品| 51久久夜色精品国产| 久久无码中文字幕东京热| 久久久无码一区二区三区| 国产香蕉97碰碰久久人人| 亚洲AV无码一区东京热久久 | 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久天天躁狠狠躁夜夜avapp| 久久久久中文字幕| 亚洲欧美日韩久久精品第一区| 一级做a爰片久久毛片人呢| 欧美国产成人久久精品| 久久精品国产72国产精福利| 久久婷婷五月综合色高清| 少妇被又大又粗又爽毛片久久黑人 | 国产精品久久99| 久久中文字幕人妻丝袜| 欧美精品福利视频一区二区三区久久久精品 | 一本久久免费视频| 久久久艹| 久久国产免费直播| 国产成人精品久久综合| 国产精品国色综合久久| 久久婷婷五月综合国产尤物app| 久久久久久精品成人免费图片| 青草久久久国产线免观| 久久婷婷五月综合97色直播| 97精品伊人久久久大香线蕉 | 久久精品国产清自在天天线| 久久久久一级精品亚洲国产成人综合AV区 | 看久久久久久a级毛片| 国产69精品久久久久久人妻精品| 伊人久久无码精品中文字幕| 亚洲色欲久久久久综合网| 性做久久久久久久久老女人| 国产精品久久婷婷六月丁香| 久久久无码精品亚洲日韩京东传媒 |