看板 C_and_CPP 關於我們 聯絡資訊
【開發平台】:VC++ 【問題內容】:各位大大早安~ (∩_∩) 想請教關於樣板(template)的問題。 假如把類別樣板(class template)寫成 H 檔與 CPP 檔, 就是把它的定義與實作分開,在 VC++ 編譯時會出現「無法解析的外部符號」。 剛才問了谷哥,它說 ANSI C++ 有 export 這個關鍵字,但是, 這個關鍵字好像…要看編譯器的支援 (._.?) 我的問題是… 1. 目前 VC++ 有沒有支援 export 關鍵字? 2. 有哪些編譯器支援 export 關鍵字? 3. 為了把類別樣板分成 H 檔與 CPP 檔,有沒有方法可以 解決「無法解析的外部符號」錯誤? 【原程式碼】:沒有,不提供。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.226.131.134 ※ 編輯: johnhmj 來自: 125.226.131.134 (11/03 22:09) ※ 編輯: johnhmj 來自: 125.226.131.134 (11/03 22:12)
poyenc:http://bit.ly/sjhEnX 11/03 22:15
poyenc:在實作檔寫一個function去呼叫你會用到的method強制編譯出 11/03 23:10
poyenc:實體, 把那個function包在anonymous Namespace隱藏起來 11/03 23:11
tomnelson:一般是建議template這東西完全放在.h檔裡,不要分開來用, 11/03 23:46
tomnelson:目前並不是所有C++ compiler都完全支援. 11/03 23:47
tomnelson:我個人也是喜歡實作與宣告分開, 不過對template這東西, 11/03 23:48
tomnelson:就不堅持這麼做了, 有時反而自找麻煩! 11/03 23:48
shadow0326:用hpp檔吧 XD 11/03 23:51
poyenc:有時候置入式模型會帶來恐怖的編譯時間 11/04 00:04
tomnelson:樓上說的沒錯,但建議去看C++ Template - The Complete 11/04 00:17
tomnelson:Guide(侯捷有翻譯中文版), 裡面有提到為什麼及折衷方法. 11/04 00:18
tomnelson:我個人覺得C++比C強大就在於template,不過也因template 11/04 00:19
tomnelson:使得C++ compiler不好寫,還有最佳化部份難做,使C++產生 11/04 00:20
tomnelson:的執行檔大很多. 真是一把兩面刃的利器... 11/04 00:22
tomnelson:不過話說回來,C++當初如果沒有template這種東西,可能現 11/04 00:23
tomnelson:在已經被其他語言取代掉了! 11/04 00:24
tomap41017:template真的很威,而且是C++博大精深的地方啊~ 11/04 01:27
james732:template是C++這隻大怪物最鋒銳的爪子啊...XD 11/04 01:44
tropical72:用 C 模擬 template 真的很麻煩,確實是 C++ 一大利器。 11/04 02:04
james732:C可以模擬出來嗎?似乎會用到大量的macro? 11/04 02:07
james732:就像MFC以前做的那個樣子...? 11/04 02:08
tropical72:更噁心的做法 : http://codepad.org/8dqQQ35o 11/04 02:10
tropical72:概念是承自c++ template, compiler 會展開,只是這次在 11/04 02:10
tropical72:前置處理時就展開。 11/04 02:11
hilorrk:export已經被removed了 11/04 14:03
喔~(∩_∩)原來如此 哇~嗚( ̄ー ̄;) tropical72大大 提供的寫法果然是蠻噁心的… 非常感謝大大們提供的資料與指教( ̄︶ ̄) ※ 編輯: johnhmj 來自: 125.228.156.83 (11/04 20:22)