| | | | | |

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

| | Top of Page | 8. Generalized Functors - 17 of 26