c 模板類 模板函式的宣告與定義應該放在標頭檔案裡

2021-07-30 12:23:56 字數 604 閱讀 4807

如果函式模板按照普通的函式宣告放在標頭檔案的,定義放在。cpp檔案,會出現錯誤:

模板函式宣告、定義、引用有什麼要注意的問題麼?? 

-- mylib.h --template

t max_v(t v1, t v2);

-- mylib.cpp --#include

"mylib.h

"template

t max_v(t v1, t v2)

-- mylibtest.cpp --#include

"mylib.h

"int

main()

使用g++編譯器,提示「undefined reference to `int max_v (int, int) '

函式模板是編譯時自動生 成各種型別的函式例項,如同內聯函式,編譯時其實現必須可見

,一般其實現應該包含在標頭檔案中。

模板函式的宣告定義要放在標頭檔案中,不可以分開放在.h和.cpp中。 

同樣,在乙個類中將乙個成員函式定義為函式模板時也是要遵從這個規則:實現要放在標頭檔案裡。

C 模板類定義與宣告

pragma once ifndef grid h define grid h template class grid int getwidth const static const int kdefaultwidth 10 static const int kdefaultheight 10 pr...

C 模板類定義與宣告

宣告和使用類模板 如果在類模板外定義成員函式,應寫成類模板形式 template 測試的模板類,如下 ifndef compare h define compare h template class compare endif include compare.h template compare c...

模板類 宣告與定義

模板類的宣告與定義 最近在編寫模板類時發現乙個問題 當把模板類分開為 h宣告檔案 和 cpp實現檔案時,在模板類的main檔案使用模板功能時,編譯結果完全正確,卻無法鏈結成功。但是,如果把main放到.cpp檔案中就沒有任何問題,或者把 cpp 和 h 檔案放在一起也沒有問題。於是摸索著學習,解決問...