最近開發的專案使用c++開發,需要大量使用message id來呼叫函式。討厭寫成switch cased的結構,就想像之前在c語言使用函式指標table的方法,來呼叫成員函式。
之前使用c語言的話,還是比較方便的。但c++語言使用成員函式指標陣列就比較麻煩。除錯了一天,終於調通了。測試可以正常執行。下面是**:
static messagemap dtcmessagemaptable[func_total_number] =
, ,
,};static dtc_status_st dtc_shadowlist[dtc_total_number] =
;dtcagent::dtcagent()
dtcagent::~dtcagent()
bool dtcagent::readdtctocache()
else }
bool dtcagent::readdtcbyid(uint8_t* data, uint8_t len)
} }cout << "read dtc by id can not match dtc code" << endl;
return false;
}bool dtcagent::writedtc()
else }
bool dtcagent::dtcagentmainfunction(messagest mdata)
} cout << "dtc agent can not find match message id" << endl;
return false;
}
typedef enum
func_id;
typedef struct
dtc_file_context;
typedef struct
messagest;
typedef struct
messagemap;
/** * @class dtcagent
* @brief dtcagent class to define the functionality/logic of dtcagent
*/class dtcagent
;
fpcbk[func_readdtcbyid] = &dtcagent::readdtcbyid;
fpcbk[func_readalldtcs] = &dtcagent::readalldtcs;
fpcbk[func_updatedtcbyid] = &dtcagent::updatedtcbyid;
fpcbk[func_readalldtcs] = &dtcagent::updatealldtcs;
關於C 成員函式指標的使用
在做專案的時候,遇到了在類中根據不同的呼叫函式,在被呼叫函式的某處需要做不同的處理,本來就想著直接在類中設個標記變數判斷下就好了,不過覺得這樣 可能看起來會有些凌亂,而且效率估計有些低,於是想起來使用函式指標。去網上查了查函式指標的使用,可能由於都沒提成員函式指標到底為什麼特殊及如何使用,只給了些例...
C 成員函式指標
c 成員函式分為靜態成員函式和普通成員函式,其中普通成員函式的實現中隱式包含了this指標作為其第乙個引數,所以導致兩者函式指標使用的差異,靜態成員函式指標與普通的外部函式指標使用基本一致,但普通成員函式指標型別的定義要包含類名的資訊 include class test static void p...
C 中類成員函式指標的使用
include stdafx.h include class test test void testfunc protected private int mi typedef void test datafunc1 範例3,類外部的typedef函式宣告,不屬於test成員,宣告時不能加test宣告...