C 模板編譯問題

2021-06-04 21:56:49 字數 387 閱讀 6859

今天做乙個矩陣類,打算使用模板,結果出現了問題。

問題描述:

像往常一樣在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的任意二進位制 如果呼...