1. 程式人生 > >C++中運用模版報“無法解析的外部符號”錯誤解決方法

C++中運用模版報“無法解析的外部符號”錯誤解決方法

最近新寫了一個Socket通訊類SocketServer,在傳輸結構體和數字時運用到了模版函式,

然而在實現呼叫時,編譯過程中模版函式會報“error LNK2019:無法解析的外部符號”。

經過查詢發現出現這一問題的原因是C++編譯機制的問題,

模板不支援分離編譯,具體原理見文章:點選開啟連結

解決方法目前已知有三種:

一是把模版函式歸總到一個SocketServer.template檔案中,在呼叫時include,這種方法可編譯成功,但VS好像不支援template檔案的顯示,程式碼都是黑色的

二是把SocketServer.cpp和SocketServer.h合併為SocketServer.h,即所有函式均在標頭檔案裡實現。

三是隻把模版函式的實現放到標頭檔案中,這樣保留了SocketServer.cpp,方便此後的擴充(我採用了這種解決方法)

還有個白痴錯誤就是函式前沒加"類名:"

歡迎補充~