作者adrianshum (Alien)
看板C_and_CPP
標題Re: [問題] 想問問是否函式陣列這樣的東西…
時間Fri Jul 3 11:11:05 2009
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
→ DRLai:其實當初我也想這樣的方式,不過想上來問問有沒有其他辦法 07/03 11:57
→ adrianshum:那麼你說一說這種方法有什麼不合用吧, 不然真的不知 07/03 16:50
→ adrianshum:建議你怎麼做才好 07/03 16:50
推 DRLai:沒有說不合用,只是想瞭解有沒有其他寫法而已^^ 07/03 17:08
推 sunneo:試試看xmacro做法啊~~~ 07/05 02:36