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

2021-09-02 22:31:23 字數 929 閱讀 7291

也許你具有良好的程式設計習慣,在定義乙個類的時候總會把宣告和實現分離開,位於不同的檔案中。比如你定義乙個類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...