作者EdisonX (卡卡獸)
看板C_and_CPP
標題[問題] function pointer array in class
時間Fri Sep 25 11:00:15 2015
開發平台(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