C 類模板的宣告與實現分離

2021-06-21 21:31:24 字數 566 閱讀 3512

第一次寫博文,本人才疏學淺,以現在的實力寫下這些東西,內容上可能會出現錯誤和不嚴謹之處,但是為了以後自己的回顧和總結,覺得自己應該在錯誤中前進,呵呵。如若讀者不幸搜尋到本人文章,請你們以懷疑的態度去閱讀。

最近在實現鏈式佇列資料結構時,發現類模板的宣告與實現分離開(採用傳統的.h檔案和對應的.cpp檔案實現時)在link階段,會出現錯誤。查閱資料後原因如下:編譯器在類模板的例項化(繫結具體的資料型別)過程中一定要知道類模板的定義**。宣告和定義分離後,編譯時,會在#include 「xx.h」檔案搜尋類模板的定義**,不幸的是自己將類模板的定義**寫在對應的「xx.cpp」檔案。因此,編譯時,編譯器不知道類模板的定義**。而定義**也無法捕獲具體的資料型別,因此鏈結過程會出現問題。

解決方法:a.將實現與宣告放在乙個檔案;b.在例項化的檔案中包含#include「xx.cpp」檔案,將定義**包含進去;c.顯示例項化,如下

//  yy.cpp               

#i nclude "array.cpp"

template class array ; // 顯式例項化

將yy.cpp包含進其他檔案中即可。

C 類模板的宣告和實現不能分離

也許你具有良好的程式設計習慣,在定義乙個類的時候總會把宣告和實現分離開,位於不同的檔案中。比如你定義乙個類a,首先建立乙個.h檔案,如下 class a 接下來你建立乙個.cpp檔案實現類的宣告,如下 include classa.h include a a int b void a show a ...

C 中模板類的宣告和實現分離問題

有兩種方法 第1種 使用 tpp 檔案實現類模板的介面與實現的檔案分離 在.h檔案中放介面,在.tpp檔案中放實現,但這種方法得在.h檔案中,類的定義下面通過 include包含 tpp 檔案,如下 檔案 放類模板的介面 pragma once templateclass templateclass...

類模板不能讓宣告和實現分離

寫模板類的時候出的問題,調了一晚上,就是鏈結出錯,於是搜尋引擎開始工作,搜到篇簡單的博文解釋,暫時做個標記吧 我們習慣是.h中放類的函式宣告,在.cpp中放類的函式定義,但在類模板中不能這樣做,如隨手寫了個demo測試了下 h中 cpp view plain copy pragma once tem...