總而言之

用template來寫函式的時候

宣告跟定義不能分開來寫

要全部都放在header裡面

 

來自這裡:

一般情況下template   類是不能編譯到靜態LIB中的,不信,你可以看MFC的代碼,計劃所有的模板類都是只有一個.h文件,它是動態聯編而不是靜態編譯,當然除了STL   和boost   這個兩個特殊的模板,VC的編譯器對他們有特殊的優化,他們可以以DLL方式提供,除此外,模板繼承都是以.h文件提供,不能編譯成DLL,你所謂的編譯 成功,只是假相,那些代碼都是死代碼,並沒有真正使用。  
   
  如果你的template   寫成   .h   和   .cpp   ,那麼你的代碼是不可能編譯的,但看afxtempl.h   ,所有的實現代碼都在裡邊,只有這樣才能和繼承類編譯鏈接。

    全站熱搜

    方格子 發表在 痞客邦 留言(0) 人氣()