摘要: 這個方法可以實現按照統一的接口來調用類成員函數,或者靜態函數和非類成員函數. 主要原理很簡單, 就是保存類對象指針和函數指針, 需要調用的時候就根據類對象指針是否為空來使用不同的方式調用函數.
首先, 我們需要一個把成員函數指針轉化成void *的東西..(強制轉換似乎是不行的), 因為我們需要把成員函數指針保存起來, 又不想讓用戶寫函數指針類型描述, 那只能轉換成void*比較方便.
這里我們使用 聯合地址轉換 的方法.
template
struct _T2T{
union {
T1 _tv1;
T2 _tv2;
};
};
template
inline T1 t2t( T2 tv2 )
{
typedef struct _T2T * PT2T;
PT2T pt = (PT2T)&tv2;
ret 閱讀全文