摘要: 这个方法可以实现按照统一的接口来调用类成员函数,或者静态函数和非类成员函数. 主要原理很简单, 就是保存类对象指针和函数指针, 需要调用的时候就根据类对象指针是否为空来使用不同的方式调用函数.
首先, 我们需要一个把成员函数指针转化成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 阅读全文