[問題] 請教函式樣版與指標的問題

看板C_and_CPP作者 (呆伯特)時間14年前 (2010/07/26 18:40), 編輯推噓3(308)
留言11則, 6人參與, 最新討論串1/1
首先,下面這個程式是可以build過的 int fn() { return 1; } int main() { void* p = fn; return 0; } 這只是想測試函式指標能不能轉為void*而已 結果是可以,而且也可以再轉回函式指標來呼叫fn(這部分不是重點,故略過) 現在,我們把函式改成樣板: template <class type> int fn() { return 1; // 根本沒用到樣板.... } int main() { void* p = fn<int>; return 0; } 這樣就build不過了!?? 而且錯誤訊息是 error C2440: 'initializing' : cannot convert from 'int (__cdecl *)(void)' to 'void *' 不能轉換? 那不用樣板為什麼就可以轉換? 由於我需要使用樣板函式,這有沒有解決方法呢? 謝謝 -- 「你要不要加入我們的TTP計畫?」 「什麼是TTP計畫?」 「喔,就是The TTP Project的縮寫」 <<呆伯特法則>> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.228.146.2

07/26 18:43, , 1F
我還以為void * p = (void *)fn<int>;就可以了...竟不行
07/26 18:43, 1F

07/26 18:49, , 2F
Dev C++連第一個都過不了(.cpp), 你副檔名根本不一樣
07/26 18:49, 2F

07/26 19:30, , 3F
http://tinyurl.com/2e778gs 這種方法還是少用為妙...
07/26 19:30, 3F

07/26 19:31, , 4F
如果是我, 應該會用 functor + singleton 來做
07/26 19:31, 4F

07/26 19:34, , 5F
模板的具現化還要考慮到 POI 不同的問題...
07/26 19:34, 5F

07/26 20:03, , 6F
如果第一個可以過的話,請馬上丟掉你的 C++ compiler。
07/26 20:03, 6F

07/26 20:42, , 7F
同意樓上
07/26 20:42, 7F

07/26 23:37, , 8F
多謝,好霸道的解法....另外我的compiler是VC2008
07/26 23:37, 8F

07/26 23:53, , 9F
專案>屬性>組態屬性>C/C++>語言>停用語言擴充功能>是
07/26 23:53, 9F

07/26 23:56, , 10F
以上是VS2010的選項
07/26 23:56, 10F

07/27 02:57, , 11F
我只能說創意無限...
07/27 02:57, 11F
文章代碼(AID): #1CJMON5t (C_and_CPP)