通過指標呼叫模板函式的一種方法

2021-04-15 10:45:32 字數 794 閱讀 6715

由於卡片的種類非常的多(100+),為了對每種型別的卡片呼叫相應的處理函式,定義了乙個如下的函式模板:

template

int addcard(const  char *  pszcardstr,  void*  base)

可問題是怎麼獲得每個例項化後的模板函式的指標?查閱了大半天的資料,終於找到了一種可行的辦法:

定義乙個函式指標:

int (*funcptr)(const char*, void* );

funcptr = &addcard;

typedef std::mapcardtypestrtoprocessormap;

cardtypestrtoprocessormap  m_typeprocessormap;

typedef cardtypestrtoprocessormap ::value_type vt;

typeprocessormap.insert(vt(string(typestring), funcptr));

原來出現問題主要有幾個地方:

1. 把typedef cardtypestrtoprocessormap ::value_type vt;誤寫為

cardtypestrtoprocessormap ::value_type vt;,結果老提示出錯。

2.下面的一步到位的寫法編譯不過:

typeprocessormap.insert(vt(string(typestring), const offset expression));

另外,如果用vc6,似乎不支援帶顯式模板引數的函式模板例項化。

PYTHON中的函式指標呼叫的一種方法

class test eventmethods test1 1 eventmethods test2 2 eventmethods test3 3 def init self self.initeventmethods self.eventmethods 1 def initeventmethods...

模組間互相呼叫的一種方法

模組間互相呼叫的一種方法 在程式設計中,需要把程式根據功能劃分多個模組,多個模組間免不了互相呼叫一些服務函式,這樣會使模組間剪不斷,理還亂!利用服務中心的思想,可以使各個模組間的關係比較簡單。模組間的呼叫通過中心伺服器交換,彼此沒有聯絡,這樣模組間可以到達低耦合,高內聚。實現方法 class bas...

反射的另外一種方法

t instance default t type type typeof t system.reflection.constructorinfo constructorinfoarray type.getconstructors system.reflection.bindingflags.ins...