今天晚上不想上自習, 在宿舍裡又閒著沒事, 就想到了以前編寫c++模板類的時候總或多或少的出現問題.
於是就在上面編寫個簡單的模板類.**如下
aa.h 檔案
#include
template
class a
private:
t *element;
int size;
};在aa.cpp中實現
#include "aa.h"
template
t& a::operator (int i) const
template
a::a() : size(0)
template
a::a(int m, const t& val) : size(m)
執行時出現錯誤
error lnk2001: unresolved external symbol "public: __thiscall a::~a(void)" (??1?$a@h@@qae@xz)
main.obj : error lnk2001: unresolved external symbol "public: int & __thiscall a::operator(int)const " (??a?$a@h@@qbeaahh@z)
main.obj : error lnk2001: unresolved external symbol "public: __thiscall a::a(int,int const &)" (??0?$a@h@@qae@habh@z)
這個問題已經困擾我好長時間了.直到今天還沒有完全明白.
模板類並不是真正的類, 只有當實體化的時候才完成了定義,然後拿這個定義才能去建立物件.
可我記得在標準c++裡把模板的宣告和實現分開在不同的檔案裡,是不是編譯器實現再來有難度,所以就不實現這個功能嗎?? 希望有高手來指正.
C 之模板 模板的學習 學習模板
c 之模板 模板學習 學習模板 模板就是建立通用的模具,大大提高復用性 函式模板 c 提供兩種模板機制函式模板和類模板 函式模板語法 函式模板作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表 語法 template typename t 函式宣告或定義解釋 t...
C 模板學習
模板定義 模板就是實現 重用機制的一種工具,它可以實現型別引數化,即把型別定義為引數,從而實現了真正的 可重用性。模版可以分為兩類,乙個是函式模版,另外乙個是類模版。類模板 允許使用者為類定義一種模式,使得類中的某些資料成員 某些成員函式的引數 某些成員函式的返回值,能夠取任意型別 包括系統預定義的...
C 學習 模板
當你在寫 的時候可能會遇到這樣的情況,多處地方都需要呼叫同乙個功能 方法,但是我們不知道呼叫者傳遞進來的引數型別,以及這個方法的返回型別,或許你可能想到的是過載或者重寫,但是還有另一種方式實現就是 模板。當然除此之外,還有類模板,它是實現 重用的一種工具。模板可以說是分為兩種型別,一種是類模板,一種...