模板類的定義和實現
//Tpl.h
#pragmaonce

template<classT>
classCTpl


{
public:
CTpl();
virtual~CTpl();

voidTest(Tt);

};
2.實現部分
//Tpl.cpp
#include"Tpl.h"

template<classT>
CTpl<T>::CTpl()


{

}

template<classT>
CTpl<T>::~CTpl()


{

}

template<classT>
voidCTpl<T>::Test(Tt)


{

}3.習慣錯誤用法
//main.cpp
#include"Tpl.h"

intmain()


{
CTpl<char>ts;
ts.Test(3);
return0;
}
build時出現link錯誤main.obj : error LNK2001: unresolved external symbol "public:virtual __thiscallCTpl<char>::~CTpl<char>(void)"(??1?$CTpl@D@@UAE@XZ)main.obj : error LNK2001: unresolved external symbol "public: void__thiscall CTpl<char>::Test(char)"(?Test@?$CTpl@D@@QAEXD@Z)main.obj : error LNK2001: unresolved external symbol "public:__thiscallCTpl<char>::CTpl<char>(void)"(??0?$CTpl@D@@QAE@XZ)這組錯誤信息和project中不加入Tpl.cpp的錯誤信息一樣,即沒有CTpl<char>的實現代碼我們把Tpl.cpp包涵到main.cpp中,問題解決4.正確用法
//main.cpp
#include"tpl.cpp"
intmain()


{
CTpl<char>ts;
ts.Test(3);
return0;
}
5.總結1.在使用以.h,.cpp分離實現模板類時,不能像使用普通類一樣只簡單的包涵.h頭文件,應該在使用模板類的cpp文件中引入模板類相應的cpp文件2.將模板類的聲明與實現都放在.h中(在多個cpp中使用不同模板參數時可能會引起重複定義的編譯錯誤)
推薦閱讀:
※XMind模板那裡可以下載?
※【代碼應用】用代碼製作詩詞模板
※【放射微學堂】骨關節病變-X線診斷影像報告模板
※四六級考前六天作文模板萬能句型大全
※有哪些 Jekyll 模板值得推薦?
