C 使用成員函式指標陣列的問題

2021-09-26 02:13:00 字數 1352 閱讀 5244

最近開發的專案使用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宣告...