我有一個調用全局函數的問題,它將函數的指針作爲參數。 這裏是全局函數的聲明:指向作爲全局函數參數的C++類成員函數?
int lmdif (minpack_func_mn fcn, void *p, int m, int n, double *x,
double *fvec, double ftol)
的「minpack_func_mn」符號是一個指向函數的類型定義,定義爲:
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':無法從「轉換爲int參數1(__thiscall LT_Calibrator :: *)(無效*,int,int,const double *,double *,int)'到'minpack_func_mn' 1>沒有上下文可以進行這種轉換「
有什麼辦法解決這個問題嗎?