[C++]模板類的宣告與實現分離問題
阿新 • • 發佈:2019-01-23
本文,記錄C++模板類的實現。
實驗環境:
- linux
- g++
- c++98
- C++ 中的模板類宣告標頭檔案和實現檔案分離後,如何能實現正常編譯? ,連結
- Splitting templated C++ classes into .hpp/.cpp files--is it possible? ,連結
- C++模板的編譯問題,連結
- 不行滴
- 具體看第一個連結,說明是:模板類是根據不同的type來編譯多份的.o檔案,根據需要連結
- 而這做法的根本原因是:C++和C一樣是靜態編譯語言,不能動態解析。
- 再具體的原因,可以深入:
- 編譯連結
- C++模板類的“例項化”過程
- 全部寫到標頭檔案裡面即可(我使用linux g++ c++98,不行,具體繼續看下面)
- 如果還不滿意,感覺與以往的.c與.h檔案分離有違背規範,可以參考stl做法(鑑於水平,我就不弄了)
- 相反,普通的class是可以將宣告與實現分類的
- 因為普通的class僅僅是針對一個type,不需要編譯多份.o檔案。
- .cpp存實現
- .h存宣告
- 呼叫include “xxx.cpp”