У меня проблема с вызовом глобальной функции, которая принимает указатель на функцию в качестве параметра.
Вот объявление глобальной функции:
int lmdif ( minpack_func_mn fcn, void *p, int m, int n, double *x,
double *fvec, double ftol)
Символ "minpack_func_mn" - это typedef для указателя на функцию, определяемый как:
typedef int (*minpack_func_mn)(void *p, int m, int n, const double *x,
double *fvec, int iflag );
Я хочу вызвать функцию "lmdif" с указателем на функцию, которая является членом класса, который я создал, и вот объявление этой функции класса:
int LT_Calibrator::fcn(void *p, int m, int n, const double *x,
double *fvec,int iflag)
Я вызываю глобальную функцию, подобную этой:
info=lmdif(<_Calibrator::fcn, 0, m, n, x, fvec, ftol)
К сожалению, я получаю ошибку компилятора, которая говорит:
«ошибка C2664:« lmdif »: невозможно преобразовать параметр 1 из« int (__thiscall LT_Calibrator :: *) (void *, int, int, const double *, double *, int) »в« minpack_func_mn »
1> Нет контекста, в котором это преобразование возможно "
Есть ли способ решить эту проблему?