看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vs2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): class C{ int func1(); int func2(); int func3(); void exe(); }; void C::exe() { typedef int (C::*fptr)(); fptr table[] = { // Q1 int (C::*fptr)()[] = { & (C::func1) , & (C::func2) , & (C::func3) }; for(int i = 0 ; i < 3; ++i) this->*table[i](); // Q2 } 錯誤結果(Wrong Output): compile error. 上述兩個 Q 是問題所在, Q1 : 請問若不用 typedef ,該如何宣告? Q2 : 請問這裡正確的敘述該如何下達? 謝謝各位! 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.92.138 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1443150021.A.1EA.html
Feis: int (C::*table[])() = { ... } 09/25 11:29
Feis: (this->*table[i])() 09/25 11:30
EdisonX: 太神了!最近為了fptr in class 搞得頭大,感謝 feis! 09/25 12:25
azureblaze: 有點好奇為什麼不想用typedef,不覺得很難讀嗎 09/25 13:06
ronin728: Q2 裏的 table[i] 跟 () 結婚了 XD 09/25 17:52
EdisonX: 不是不用typedef,而是想知道如果不用正確要怎寫 09/25 19:31
LPH66: 有 typedef 可以看的話很簡單, 把宣告右邊的東西代入 09/25 20:59
LPH66: typedef 那一行名字所在的部份即可, 指標陣列啥的都帶過去 09/25 20:59
LPH66: 視狀況放進去前包個括號就差不多了 09/25 21:00
EdisonX: 原來如此!感謝! 09/25 21:23