[問題] CL.exe 以返回碼2結束

看板C_and_CPP作者 (NICK)時間7年前 (2018/04/20 22:34), 7年前編輯推噓5(5010)
留言15則, 2人參與, 7年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) window10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) vs 2017 問題(Question): 我寫了2個標頭檔 1. BinaryHeap.h 2. MinHeap.h Minheap是繼承BinaryHeap 我把2個都寫在namespace MyHeap 中 然後我都是把implement和declare分開 像這樣 namespace MyHeap { template<typename T> class BinaryHeap { //declare void function(void) const; }; template<typename T> void BinaryHeap<T>::function(void) const { //implement } } 但是編譯後會出現 "CL.exe"以返回碼2結束 然後我把BinaryHeap.h的implement搬到class中之後 像這樣 namespace MyHeap { template<typename T> class BinaryHeap { void function(void) const { //implement } }; } 就可以編譯了 我想問問題是出在哪裡 然後為甚麼只要BinaryHeap.h改成這樣就可以過 而不是2個header都要改 我覺得應該不是我的code有寫錯因為通過編譯後可以運行 但如果覺得需要補上程式碼我會放上來 謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.183.79 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1524234888.A.25D.html

04/20 22:44, 7年前 , 1F
因為是 template。模版在 T 給定前都還是未完成的程式碼
04/20 22:44, 1F

04/20 22:49, 7年前 , 2F
喔, 我看錯了... cl 返回 2 應該是編譯錯誤
04/20 22:49, 2F

04/20 22:49, 7年前 , 3F
應該是你的定義那部份沒有加上 template<typename T>
04/20 22:49, 3F

04/20 22:50, 7年前 , 4F
template<typename T> void BinaryHeap<T>::function(void)
04/20 22:50, 4F

04/20 22:51, 7年前 , 5F
你的 class 宣告在 }; 就結束了, 所以上面的 T 也到此為止
04/20 22:51, 5F

04/20 22:51, 7年前 , 6F
下面要再用 <T> 要重新說"等一下的 T 是模版參數"
04/20 22:51, 6F

04/20 22:53, 7年前 , 7F
是說, 既然是編譯錯誤應該有別的錯誤訊息
04/20 22:53, 7F
抱歉是我文章忘了打@@ 我的code是有加template的 所以cl.exe返回2有地方編譯不過囉? ※ 編輯: nicknick0630 (140.117.183.79), 04/20/2018 23:07:59

04/20 23:32, 7年前 , 8F
你應該要去找記錄或輸出等地方, 絕對會有詳細的錯誤訊息
04/20 23:32, 8F

04/21 21:16, 7年前 , 9F
報告一個個人遇過的罕見原因:VS 語系設定問題
04/21 21:16, 9F

04/21 21:16, 7年前 , 10F
之前也遇過 CL.exe 返回 2。VS 改英文語系 link 就過
04/21 21:16, 10F

04/21 21:16, 7年前 , 11F
一樣的 code VS 改中文語系馬上就 link 不會過....
04/21 21:16, 11F

04/21 21:16, 7年前 , 12F
當然不是說一定是這原因造成的
04/21 21:16, 12F

04/21 21:17, 7年前 , 13F
只是當開 debug build log 還排查不出問題時,也許連結環
04/21 21:17, 13F

04/21 21:17, 7年前 , 14F
境也要考慮....
04/21 21:17, 14F

04/21 21:19, 7年前 , 15F
對不起工作太累沒看清楚貼文,請無視我剛說的.....
04/21 21:19, 15F
文章代碼(AID): #1QsVg89T (C_and_CPP)