Re: [問題] 想問問是否函式陣列這樣的東西…
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
07/05 02:36, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):