如题,我想写一个类,用LM方法求解非线性方程组,其中调用了levmar库中的
dlevmar_dif,函数原型如下:
```
extern int dlevmar_dif(
void (*func)(double *p, double *hx, int m, int n, void *adata),
double *p, double *x, int m, int n, int itmax, double *opts,
double *info, double *work, double *covar, void *adata);
```
第一个参数是一个函数,用于表达需要求解的非线性方程组,输入如下内容的函数可以运行:
```
void WorldFunc1(double* WorldCoord, double* zero, int m, int n, void* data)
{
...(内容省略)
}
```
我现在希望将上述的WorldFunc1变为一个类LMsolve的成员函数,如下:
```
void LMsolve::WorldFunc1(double* WorldCoord, double* zero, int m, int n, void* data)
{
...(内容省略)
}
```
然后在另一个成员函数中调用dlevmar_dif并将上述成员函数作为参数引入,这时出现了以下问题:

另一个成员函数内容如下:
```
LMsolve::SolveResult LMsolve::fSolve()
{
SolveResult result; //这是头文件中定义的一个结构体
...
ret = dlevmar_dif(WorldFunc, WorldCoord, zero, m, n, 1000, opts, info, NULL, NULL, (void*)&data); // withoutJacobian
result.Error = info[1]; result.IterNum = ret; result.Dp = info[3];
return result;
}
```
本人C++技术比较菜,求解