C++篇之成员函数注册为回调函数

#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);


遇到了个需要成员函数作为回调函数的问题,特此记录一下,代码部分非原创,源链接已经忘记,小做记录以备查询

原文地址:https://www.cnblogs.com/klxs1996/p/14943497.html