我正在使用数字配方库编写代码,我想最小化一个实际上是类方法的函数。我有这种类型的代码:
class cl{
Doub instance(VecDoub_I &x)
{
return x[0]*x[0] + x[1]*x[1];
};
};
我想在下面的代码中使用Powell方法最小化此函数
// enter code here
int main(void)
{
cl test;
Powell<Doub (VecDoub_I &)> powell(test.instance);
}
但是当我编译时,我得到以下错误:
main.cpp:241:22: error: invalid use of member function (did you forget the ‘()’ ?)
main.cpp:242:54: error: no matching function for call to ‘Powell<double(const NRvector<double>&)>::Powell(<unresolved overloaded function type>)’
有人已经遇到过这个问题吗? 提前致谢
答案 0 :(得分:0)
由于cl::instance
是实例方法(即不是静态方法),因此需要this
指针。因此,您无法在regular function pointer中捕获指向它的指针。另外,为了获取函数的地址,您应该使用&
运算符。
我不熟悉您正在使用的库,但我认为将函数更改为static
(或使其成为自由函数)并添加&
应该会有所帮助
Powell<Doub (VecDoub_I &)> powell(&cl::instance);