[問題] template重載<<,分開會寫Linking error

看板C_and_CPP作者 (LoyalDog)時間11年前 (2014/03/27 11:14), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2012 問題(Question): template中重載運算子 << ,分成.h 跟 .cpp後失敗.. 放在.h檔裡面OK。 程式碼(Code):*[m http://ideone.com/4QKTvU 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.198.169 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1395890046.A.41E.html

03/27 11:14, , 1F
標題錯字 ((汗 分開寫會Linking error才對
03/27 11:14, 1F

03/27 13:25, , 2F
試了下原因似乎是因為宣告class 的template 中的
03/27 13:25, 2F

03/27 13:26, , 3F
Container 名字重覆了 所以換個名字看看
03/27 13:26, 3F

03/27 14:46, , 4F
?!?! Container名字重複是指?
03/27 14:46, 4F

03/27 14:47, , 5F
StringContainer跟IntegerContainer是自訂類別
03/27 14:47, 5F

03/27 14:48, , 6F
另外Node這個Class很肥..但其他註解掉後錯誤是一樣的
03/27 14:48, 6F

03/27 14:48, , 7F
所以只有附上有錯誤的部分
03/27 14:48, 7F

03/27 18:21, , 8F
03/27 18:21, 8F

03/27 18:21, , 9F
失敗,重來。http://ppt.cc/~ztE
03/27 18:21, 9F
謝謝樓上,不過我在.cpp檔有實體化喔~ 相當於文章中的第二種方法, 其他函式也確實沒問題,整支程式都可以跑了...就只剩下這個Operator分開會出現 Linking Error,無法解析的外部符號... 因為其他的Operator Overloadding都沒什麼問題,懷疑會是friend跟template 之間需要作什麼特殊處理,但目前還查不到相關資訊 Orz ※ 編輯: lovesnake 來自: 140.121.198.169 (03/27 19:48)

03/28 16:58, , 10F
http://ideone.com/4Qj5A6 但還是推薦放在header檔裡
03/28 16:58, 10F

03/28 17:03, , 11F
放在.cpp裡太邪惡也太痛苦了
03/28 17:03, 11F
原來Friend在CPP裡面也要都實例化一遍...了解了~ 謝謝!! 哈哈,的確很麻煩~ 不過對我來說,無法把Declaration跟Definition分開來寫我會更痛苦 Orz 或許以後會習慣吧 XD... ※ 編輯: lovesnake 來自: 140.121.198.169 (03/28 22:50)
文章代碼(AID): #1JCvT-GU (C_and_CPP)