[問題] 陣列的內容是函數指標

看板C_and_CPP作者 (累人啊....)時間14年前 (2009/10/11 21:31), 編輯推噓7(7021)
留言28則, 8人參與, 最新討論串1/5 (看更多)
如題,請問有可能嗎,我目前有個構想,要建出一張表,類似這樣 Index Function 1 fun1 2 fun2 ... ... 類似這樣,當我輸入1,便會去執行fun1的函數,輸入2便去執行fun2的函數 而我目前想的是建兩個array,一個型態為int(ex. int Index[10]) 另一個內容則放指向函數的指標,請問這樣該怎麼寫呢?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28

10/11 21:36, , 1F
10/11 21:36, 1F

10/11 21:57, , 2F
卡語法 就用個struct包起來XD 宣告i個物件....
10/11 21:57, 2F

10/11 22:16, , 3F
用struct加vector呢?
10/11 22:16, 3F

10/11 23:41, , 4F
推文第一篇, 幫忙畫重點 int (*p[4]) (int x, int y);
10/11 23:41, 4F

10/12 10:18, , 5F
阿~~~我忘了講到一件事,如果參數型態都不一樣的話怎麼辦?
10/12 10:18, 5F

10/12 10:24, , 6F
參數型態都不同可能就沒辦法這樣用陣列func ptr....
10/12 10:24, 6F

10/12 10:25, , 7F
用一個struct把不同的func ptr group起來如何??
10/12 10:25, 7F

10/12 10:26, , 8F
可是這樣好像沒辦法像你說的用[]去用Orz
10/12 10:26, 8F

10/12 10:28, , 9F
參數型態都不一樣... 不知道「...」能不能用 XD
10/12 10:28, 9F

10/12 10:32, , 10F
測試一下好像不行
10/12 10:32, 10F

10/12 10:54, , 11F
我的老師跟我說變數全放在全域,然後不傳參數
10/12 10:54, 11F

10/12 10:55, , 12F
如果把你說的function 寫成template可以嗎?
10/12 10:55, 12F

10/12 10:55, , 13F
但是fun要用的變數全都要全域抓,不過我覺得真的很怪...XD
10/12 10:55, 13F

10/12 10:55, , 14F
再google一下function pointer to template function???
10/12 10:55, 14F

10/12 10:56, , 15F
我個人覺得全域變數總不是個好解法 XD
10/12 10:56, 15F

10/12 12:26, , 16F
就把參數橋成一樣就好了啊
10/12 12:26, 16F

10/12 13:20, , 17F
還有個鳥招, 全部用void*, 然後每個func裡自己轉XD
10/12 13:20, 17F

10/12 13:27, , 18F
不是很懂Vi大所說的方法....
10/12 13:27, 18F

10/12 13:30, , 19F
你現在每個index的func傳入的參數型態都不同, 這樣子應
10/12 13:30, 19F

10/12 13:30, , 20F
該func ptr array會開不起來; 全部改用void*型態就一致
10/12 13:30, 20F

10/12 13:31, , 21F
了, 之後不同index裡的func實體再依照自己要的型態來做
10/12 13:31, 21F

10/12 13:32, , 22F
轉型, ex: int x, y; (*p[0])((void*)&x, (void*)&y);
10/12 13:32, 22F

10/12 13:32, , 23F
p[0]的實體: int p0X = *(int*)x, p0Y = *(int*)y;
10/12 13:32, 23F

10/12 13:33, , 24F
這樣做的問題是, 很麻煩又噁心, 然後caller/callee要自
10/12 13:33, 24F

10/12 13:34, , 25F
己sync好要用什麼方式call與實作.
10/12 13:34, 25F

10/12 13:35, , 26F
我是覺得你要不要就巨觀的想法與概念來說一下你想做什
10/12 13:35, 26F

10/12 13:35, , 27F
麼??不然總覺得你的需求好像不需要func ptr array, 用
10/12 13:35, 27F

10/12 13:35, , 28F
template或一般的func overload就可以辦得到了@_@"
10/12 13:35, 28F
文章代碼(AID): #1AqTu-Wa (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AqTu-Wa (C_and_CPP)