如果函式模板按照普通的函式宣告放在標頭檔案的,定義放在。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 檔案放在一起也沒有問題。於是摸索著學習,解決問...