template <typename T, typename F>
class IFunc
{
public:
IFunc(T *obj, F func)
{
m_pObj = obj;
m_pFun = func;
}
virtual int Run()
{
(m_pObj->*m_pFun)();
return 0;
}
T *m_pObj;
F m_pFun;
};
//因为函数模板可以自动推导,所以用这样的方式使用更轻松。
template<typename T, typename F>
IFunc<T, F>* CreateAsynFun(T *obj, F fun)
{
IFunc<T, F> *pTask = new IFuncAsynTask<T, F>(obj, fun);
return pTask;
}