好久不用c++了,前幾天寫了乙個模版,按以前的習慣,把定義寫在標頭檔案中, 把實現寫在cpp檔案中。結果在編譯的時候沒有發生錯誤,但在連線的時候出現了找不到***的錯誤。一時之間不知道該怎麼辦才好,後來上網一查,自己再一想,唉,原來如此:
模版之所以為模版,就是可以容納不同的型別嘛,所以它只有在指定了其型別的時候才會生成實際的**,如果你只把模版的定義寫在標頭檔案中,那麼你生成在使用模版的時候就只會有宣告的定義部分,而沒有其具體的實現,所以鏈結器在連線時會報錯。
解決的辦法有兩個:
1. 把模版的宣告和實現都寫在乙個標頭檔案中,然後用的時候包含這個標頭檔案。
2. 如果你已經把它們分開了,比如說***.h ***.cpp。那也好辦,只好在使用的時候#include 「***.h」 #include 「***.cpp」即可。
關於socket鏈結錯誤問題
用socket做乙個簡單的windows程式,先拿來了以前在vc6.0上做的一小段 竟然發現在vs2008上不能執行.出現了好多鏈結錯誤,研究了好半天也沒有發現是怎麼回事.下來是 和 錯誤資訊.正在鏈結 1 tem.obj error lnk2019 無法解析的外部符號 imp closesocke...
關於C 模版的連線錯誤問題
好久不用c 了,前幾天寫了乙個模版,按以前的習慣,把定義寫在標頭檔案中,把實現寫在cpp檔案中。結果在編譯的時候沒有發生錯誤,但在連線的時候出現了找不到 的錯誤。一時之間不知道該怎麼辦才好,後來上網一查,自己再一想,唉,原來如此 模版之所以為模版,就是可以容納不同的型別嘛,所以它只有在指定了其型別的...
C 函式模板特化導致的多重定義鏈結錯誤
標題說的可能不是很清楚,解釋一下,函式模板,一般都是放在標頭檔案裡面,所以有些時候,我也會做乙個特化,也放在這個標頭檔案裡面,當這個標頭檔案出現多次的包含之後,就會出現鏈結多重定義的錯誤,先說乙個例子,如下 有檔案 header.h ifndef header define header templ...