Re: [問題] 想問問是否函式陣列這樣的東西…

看板C_and_CPP作者 (Alien)時間15年前 (2009/07/03 11:11), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串3/4 (看更多)
code 該會有很多錯, 旨在給個 idea: 把 TYPE 做成 enum: enum TYPE { type_a = 0, type_b, type_c : : } 建立你的 func ptr array typedef void *FooFunc(int); FooFunc func[no_of_type]; func[type_a] = func1; func[type_b] = func2; 要用的時候, 就可以直接用 func[type_a] 來取得. 當然, 這只是在你的 type 的數量比較 穩定的情況下合用, 不然的話用 enum 總是有點怪怪. 如果寫 C++ 的話, 也可以用 map, 那麼只要你能寫好 TYPE (可以是任何 type) 的比較 method (less than) 就能用 funcMap[type_a] 的方法存取 ※ 引述《DRLai (蘇打)》之銘言: : 想請問不知道函式是否也能寫成陣列的型態呢? : 例如說,我原本有個函式長相如下 : void func( TYPE mytype, int data ) { : ... : } : 會依據TYPE來決定他的功能 : 但我想是不是有其他種寫法 : 例如當我呼叫他時,只要使用 : func[mytype](data) 這樣的方式呼叫 : 好像沒有這樣的寫法orz.. : 覺得名稱用太多會很雜 : 我目前撰寫大概是這樣的形式 : void func( TYPE mytype, int data ) { : switch( mytype ) { : case type_a: : func_a(data); : break; : case type_b: : func_b(data); : break; : ... : } : } : 感覺這樣寫得太複雜,想要簡化他 : 請高手協助吧:) : 感謝:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82

07/03 11:57, , 1F
其實當初我也想這樣的方式,不過想上來問問有沒有其他辦法
07/03 11:57, 1F

07/03 16:50, , 2F
那麼你說一說這種方法有什麼不合用吧, 不然真的不知
07/03 16:50, 2F

07/03 16:50, , 3F
建議你怎麼做才好
07/03 16:50, 3F

07/03 17:08, , 4F
沒有說不合用,只是想瞭解有沒有其他寫法而已^^
07/03 17:08, 4F

07/05 02:36, , 5F
試試看xmacro做法啊~~~
07/05 02:36, 5F
文章代碼(AID): #1AJNRAHt (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AJNRAHt (C_and_CPP)