由於卡片的種類非常的多(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...