[問題] function pointer array in class

看板C_and_CPP (C/C++)作者 (卡卡獸)時間10年前 (2015/09/25 11:00), 編輯推噓1(109)
留言10則, 5人參與, 最新討論串1/1
開發平台(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

09/25 11:29, , 1F
int (C::*table[])() = { ... }
09/25 11:29, 1F

09/25 11:30, , 2F
(this->*table[i])()
09/25 11:30, 2F

09/25 12:25, , 3F
太神了!最近為了fptr in class 搞得頭大,感謝 feis!
09/25 12:25, 3F

09/25 13:06, , 4F
有點好奇為什麼不想用typedef,不覺得很難讀嗎
09/25 13:06, 4F

09/25 17:52, , 5F
Q2 裏的 table[i] 跟 () 結婚了 XD
09/25 17:52, 5F

09/25 19:31, , 6F
不是不用typedef,而是想知道如果不用正確要怎寫
09/25 19:31, 6F

09/25 20:59, , 7F
有 typedef 可以看的話很簡單, 把宣告右邊的東西代入
09/25 20:59, 7F

09/25 20:59, , 8F
typedef 那一行名字所在的部份即可, 指標陣列啥的都帶過去
09/25 20:59, 8F

09/25 21:00, , 9F
視狀況放進去前包個括號就差不多了
09/25 21:00, 9F

09/25 21:23, , 10F
原來如此!感謝!
09/25 21:23, 10F
文章代碼(AID): #1M1BZ57g (C_and_CPP)
文章代碼(AID): #1M1BZ57g (C_and_CPP)