Вам нужна нечлена или статическая функция-член; указатель функции-члена не может использоваться вместо вашего типа функции, потому что для его вызова требуется экземпляр.
Если вашей функции не нужен доступ к экземпляру LT_Calibrator
, вы можете просто объявите его статическим или сделайте его свободной функцией. В противном случае, похоже, вы можете использовать первый аргумент (void *p
) для передачи указателя экземпляра в функцию «батут», которая затем может вызвать функцию-член. Что-то вроде этого:
// member function
int LT_Calibrator::fcn(int m, ...);
// static (or non-member) trampoline
static int fcn_trampoline(void *p, int m, ...)
{
return static_cast<LT_Calibrator*>(p)->fcn(m,...);
}
info = lmdif(&fcn_trampoline, this, m, ...);