#include <functional> template <typename T> struct Callback; template <typename Ret, typename... Params> struct Callback<Ret(Params...)> { template <typename... Args> static Ret callback(Args... args) { return func(args...); } static std::function<Ret(Params...)> func; }; template <typename Ret, typename... Params> std::function<Ret(Params...)> Callback<Ret(Params...)>::func; typedef void (*callback_t)(uint8_t *, int, void *); //main GstreamDecode* decode = new GstreamDecode();Callback<void(uint8_t *, int, void *)>::func = std::bind(&GstreamDecode::PushFrameArg, decode, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); callback_t func = static_cast<callback_t>(Callback<void(uint8_t *, int, void *)>::callback); obj.registerVideoDataCb(func);
遇到了个需要成员函数作为回调函数的问题,特此记录一下,代码部分非原创,源链接已经忘记,小做记录以备查询