也許你具有良好的程式設計習慣,在定義乙個類的時候總會把宣告和實現分離開,位於不同的檔案中。比如你定義乙個類a,首先建立乙個.h檔案,**如下:
class a
接下來你建立乙個.cpp檔案實現類的宣告,**如下:
#include"classa.h"
#include
a::a(int b)
void a::show()
a::~a()
接下來就要使用這個類了,新建乙個cpp檔案,**如下:
#inlucde"classa.h"
#include
int main()
可能你和我一樣,按照上訴程式設計習慣來寫類模板,這簡直就是個遭遇!
將上面的類a改為類模板,.h檔案如下:
template
class a
把.cpp檔案改為如下:
#include"classa.h"
#include
template
a::a(t b)
template
void a::show()
template
a::~a()
main函式的.cpp檔案**改為:
#inlucde"classa.h"
#include
int main()
此時執行,錯誤發生。如果我們將類模板的宣告和定義寫在乙個檔案中呢,即把.h和.cpp檔案合併,得到如下**:
template
class a
template
a::a(t b)
template
void a::show()
template
a::~a()
這樣在進行除錯,則沒有錯誤。
所以,我們得到:
類模板不能將宣告和實現分離在兩個檔案中!!
類模板不能讓宣告和實現分離
寫模板類的時候出的問題,調了一晚上,就是鏈結出錯,於是搜尋引擎開始工作,搜到篇簡單的博文解釋,暫時做個標記吧 我們習慣是.h中放類的函式宣告,在.cpp中放類的函式定義,但在類模板中不能這樣做,如隨手寫了個demo測試了下 h中 cpp view plain copy pragma once tem...
C 類模板的宣告與實現分離
第一次寫博文,本人才疏學淺,以現在的實力寫下這些東西,內容上可能會出現錯誤和不嚴謹之處,但是為了以後自己的回顧和總結,覺得自己應該在錯誤中前進,呵呵。如若讀者不幸搜尋到本人文章,請你們以懷疑的態度去閱讀。最近在實現鏈式佇列資料結構時,發現類模板的宣告與實現分離開 採用傳統的.h檔案和對應的.cpp檔...
C 中模板類的宣告和實現分離問題
有兩種方法 第1種 使用 tpp 檔案實現類模板的介面與實現的檔案分離 在.h檔案中放介面,在.tpp檔案中放實現,但這種方法得在.h檔案中,類的定義下面通過 include包含 tpp 檔案,如下 檔案 放類模板的介面 pragma once templateclass templateclass...