推 tropical72:不推不行啊!! 12/15 06:21
※ 引述《ayumiQmazaky (拜託刪我 爛人)》之銘言:
: 在簡單複習一下template的用法
: http://hatsukiakio.blogspot.com/2009/05/c-template.html
: 這網頁介紹得不錯
我就針對這個網頁的內容回好了, 首先是這段程式碼:
http://paste.plurk.com/show/796586/
這段程式碼之所以不能產生 executable 的原因:
1. 假如你是在 "..." 的地方呼叫 swaps<T>(), 編譯器雖看得到
template宣告, 但因為沒有提供模版的樣貌所以不能在呼叫點
產生可用的函式實體
2. 在編譯 swaps() (非模版)的時候編譯器無法找出 T 代表的型
別為何,所以也無法產生可用的函式實體
接著再來看他所謂聖經裡面的例子:
http://codepad.org/vYlRCShM
之後他寫的一切請你全都忘掉, 如果你想要儲存整數指標, 在定義
容器的時候寫成這樣就好:
http://codepad.org/8BVQI3V6
任何靜態成員都不需要! 只是要記得釋放掉配置出來的記憶體...
Vector<T*> 去繼承 Vector<void*> 雖然可以節省釋放的程式碼, 但
是具現化出來的類別實體數量實際上是不會變少的, 雖然也可以做:
http://codepad.org/5PCbQuYt
只是這樣轉不一定安全就是了, 只要你用 static_cast<T> 編譯器會
該該叫的都儘量別去寫(程式碼基於 sizeof(T*) == sizeof(void*)
的假設)
你沒發現他給的錯誤訊息都跟例子都毫不相關嗎?好歹也先檢查一下
= ="
--
★ ★ ★ ★
★ ★ ★ ███ ███ █ █▌█ ██◣ ███ ▋▋█ ★ ★ ★
█▂█ █▃█ █ ███ █▆█ █▄█ ███
★ ★ █ ◣ █ █ █ ▋██ █▆◤ ███ ███ ★ ★
Kim Jae Kyung Koh Woo Ri Cho Hyun Young Kim Ji Sook
φwindyhorse No Eul Oh Seung A Jung Yoon Hye
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
※ 編輯: loveme00835 來自: 140.121.197.115 (12/14 23:50)