類模板的宣告與實現要在同乙個檔案中

2021-08-16 07:57:16 字數 1666 閱讀 8846

最近在學資料結構的一些東西,編寫順序表的時候遇到了乙個問題,困擾良久,就是類模板宣告與實現的問題。筆者開始是根據書上的步驟來敲**,可是在編譯的時候確出現了問題,檢查了很多遍,發現自己寫的和書上的乙個標點符號都沒有錯,後來在網上大神的幫助下解決了這個問題,現在就和大家分享一下我的經驗,直接上**:

.h檔案:

//順序表的類宣告

#define defaultsize 100

templateclass seqlist

int getsize(); //獲取maxsize

};

.cpp檔案

#include"seqlist.h"

#includeusing namespace std;

//定義建構函式

//通過指定引數sz定義陣列長度

templateseqlist::seqlist(int sz /*= defaultsize*/) }}

//獲取maxsize

#include"seqlist.h"

#includeusing namespace std;

int main()

templateint seqlist::getsize()

main.cpp檔案

#include"seqlist.h"

#includeusing namespace std;

int main()

結果顯示:

.h檔案:

#pragma once

#includeusing namespace std;

//順序表的類宣告

#define defaultsize 100

templateclass seqlist

int getsize(); //獲取maxsize

};//定義建構函式

//通過指定引數sz定義陣列長度

templateseqlist::seqlist(int sz /*= defaultsize*/) }}

//獲取maxsize

templateint seqlist::getsize()

main.cpp檔案:

#include"seqlist.h"

int main()

結果顯示:

**一點沒有變。僅僅是調換了位置。。。。。。。。。就可以了,所以:

一般情況下我們在用vs編寫c++**的時候都會習慣性的將宣告性的**放在.h檔案中,然後將實現檔案放在.cpp檔案中,只需載入相關的.h檔案即可。但是在類模板中這個是行不通的,如果遇到這種情況,

只需要將類模板的實現在其對應的宣告檔案中就可以解決問題。 具體為啥,我猜是微軟的bug。。

模板函式需要將宣告和實現放到同乙個檔案中

模板函式需要將宣告和實現放到同乙個檔案中 ifndef template test h h define template test h h bool isequal int i1,int i2 templatebool isequalex type t1,type t2 class myclass...

NSTimer 開啟和終止,要在同乙個執行緒執行

nstimer 開啟和終止,要在同乙個執行緒執行,所以,如果你在某乙個執行緒 類似這樣延遲執行開啟定時器 self performselector selector starttimer withobject nilafterdelay 2.0 你也要在同乙個執行緒類似這樣做來取消執行 nsobje...

linux vnc 與server共享同乙個桌面

伺服器端 需要安裝軟體 tightvncserver 和 vnc4server,可以google,這裡就不解釋了,網上很多。我這裡是ubuntu 1.sudo apt get install tightvncserver 2.sudo apt get install vnc4server 3.vnc...