У меня есть сторонняя библиотека, у которой есть метод, который принимает указатель на функцию в качестве первого параметра:
int third_party_method(void (*func)(double*, double*, int, int, double*), ...);
Я хочу передать указатель на метод класса, который объявлен следующим образом:
class TestClass
{
public:
void myFunction (double*, double*, int, int, void*);
Я попытался передать эту функцию следующим образом:
TestClass* tc = new TestClass();
using namespace std::placeholders;
third_party_method(std::bind(&TestClass::myFunction, tc, _1, _2, _3, _4, _5), ...);
Однако это не скомпилируется:
Conversion of parameter 1 from 'std::tr1::_Bind<_Result_type,_Ret,_BindN>' to 'void (__cdecl *)(double *,double *,int,int,void *)' is not possible
with
[
_Result_type=void,
_Ret=void,
_BindN=std::tr1::_Bind6<std::tr1::_Callable_pmf<void (__thiscall TestClass::* const )(double *,double *,int,int,void *),TestClass,false>,TestClass *,std::tr1::_Ph<1>,std::tr1::_Ph<2>,std::tr1::_Ph<3>,std::tr1::_Ph<4>,std::tr1::_Ph<5>>
]
Есть ли способ передать член функции?