パラメータを受け取るラムダ式を受け取るメンバ関数の実装例

…って作った後に参照キャプチャ/コピーキャプチャの存在を知った。 意味ない努力したけどメモ代わりに書いておく。

// ラムダ式受け取る側

#include <functional>
...
BOOL Choge::CallFunc(std::function<BOOL(void*)> func,void* p_param){

 ....

 //関数コール
 BOOL result = func(p_param)

 ....

 return result;
}

// 呼び出し側

main(){

 Choge hoge;

 typedef struct _PARAM{
  long arg1;
  long arg2;
  long arg3;
 }PARAM;
 
 PARAM param; 
 param.arg1 = 100;
 param.arg2 = 200;
 param.arg3 = 300;

 hoge.CallFunc( [](void* p_param) -> BOOL{

      PARAM *p = (PARAM *)p_param;
   
   AfxMessageBox(_T("ラムダ!"));
   
   ...
   
   return TRUE;
  }
  ,&param
 );
}


ネタ元