今天做乙個矩陣類,打算使用模板,結果出現了問題。
問題描述:
像往常一樣在matrix.h檔案中定義了乙個模板類,如下
template
class matrix
matrix();
在matrix.cpp檔案中定義類成員函式,如下
template
matrix::matrix()
編譯不通過
最後找到解決辦法,將cpp檔案的內容寫到頭檔案中,即函式的宣告和定義寫到一起,編譯通過。
在c++primer中找到答案,模板類的編譯是分兩種的一種是包含編譯,就是我們使用的,一種是分離編譯。不過分離編譯需要加上關鍵字export。
測試了一下,發現vs2005不支援export進行分離編譯。
C 模板的編譯問題
c 編譯器與鏈結器工作原理 講了一下 c 對於模板,包括模板類與模板函式,它們的 其實並不是直接翻譯成二進位制 它要求有乙個 具體化 的過程,舉個例子 template void funa t t int main 也就是說,如果在 main 函式中,沒有呼叫過 funa 函式的話,那麼在 main...
C 模板的編譯問題
對於模板,包括模板類與模板函式,它們的 其實並不是直接翻譯成二進位制 它要求有乙個 具體化 的過程,舉個例子 template void funa t t int main 也就是說,如果在main函式中,沒有呼叫過funa函式的話,那麼在main.obj中就找不到關於funa的任意二進位制 如果呼...
C 模板的編譯問題
對於模板,包括模板類與模板函式,它們的 其實並不是直接翻譯成二進位制 它要求有乙個 具體化 的過程,舉個例子 template void funa t t int main 也就是說,如果在main函式中,沒有呼叫過funa函式的話,那麼在main.obj中就找不到關於funa的任意二進位制 如果呼...