我遇到了一个问题,即调用一个接受函数指针作为参数的全局函数。 下面是该全局函数的声明:
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)
很不幸,我遇到了一个编译器错误,它说: "error C2664: 'lmdif' : 无法将参数 1 从 'int (__thiscall LT_Calibrator::* )(void *,int,int,const double *,double *,int)' 转换为 'minpack_func_mn' 1> 没有上下文可以进行此转换"
有没有解决这个问题的方法?