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; }