Handling Pointers to Member Functions
template <class ParentFunctor, typename PointerToObj, typename PointerToMemFun>
class MemFunHandler : public FunctorImpl
< typename ParentFunctor::ResultType, typename ParentFunctor::ParmList >
{
public:
typedef typename ParentFunctor::ResultType ResultType;
MemFunHandler(const PointerToObj& pObj, PointerToMemFun pMemFun)
: pObj_(pObj), pMemFun_(pMemFun) {}
MemFunHandler* Clone() const
{
return new MemFunHandler(*this);
}
ResultType operator() ()
{
return ((*pObj_).*pMemFun_)();
}
ResultType operator() (typename ParentFunctor::Parm1 p1)
{
return ((*pObj_).*pMemFun_)(p1);
}
ResultType operator()
(typename ParentFunctor::Parm1 p1, typename ParentFunctor::Parm2 p2)
{
return ((*pObj_).*pMemFun_)(p1);
}
...
private:
PointerToObj pObj_;
PointerToMemFun pMemFun_;
};