1. 程式人生 > 其它 >C++篇之成員函式註冊為回撥函式

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=newGstreamDecode();
Callback<void(uint8_t*,int,void*)>::func=std::bind(&GstreamDecode::PushFrameArg,decode,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3); callback_tfunc=static_cast<callback_t>(Callback<void(uint8_t*,int,void*)>::callback); obj.registerVideoDataCb(func);


遇到了個需要成員函式作為回撥函式的問題,特此記錄一下,程式碼部分非原創,源連結已經忘記,小做記錄以備查詢