// // Created by epagris on 2021. 11. 18.. // #ifndef WFR_CALLBACK_H #define WFR_CALLBACK_H #include template class CallbackBase { public: virtual void operator()(ParamTypes... params) = 0; }; template class Callback : public CallbackBase { public: T * pObj; // pointer to object to call the function on void(T::*pFN)(ParamTypes... params); // member function pointer Callback(T * pObj, void(T::*pFN)(ParamTypes... params)) : pObj(pObj), pFN(pFN) {} void operator()(ParamTypes... params) override { std::invoke(pFN, *pObj, params...); } }; #endif //WFR_CALLBACK_H