09/02/16 07:27:03
>>66
C# の delegate を参考にしてみれ。
class delegate {
public:
virtual ~delegate() { }
virtual void operator()() = 0;
};
template <typename T>
class delegateT : public delegate {
public:
typedef void (T::*Mfn)();
delegateT(T* obj, Mfn mfn) : m_obj(obj), m_mfn(mfn) { }
virtual void operator()() { (m_obj->*m_mfn)(); }
private:
T* m_obj;
Mfn m_mfn;
};