C++ 传递成员函数指针
我的情况如下,我有两个不同的二分法函数,它们将在我的代码中的某个点被调用。基本上有些函数调用二分法2,这个函数调用传递的函数或者将函数指针传递给二分法函数 在头球我有C++ 传递成员函数指针,c++,function-pointers,C++,Function Pointers,我的情况如下,我有两个不同的二分法函数,它们将在我的代码中的某个点被调用。基本上有些函数调用二分法2,这个函数调用传递的函数或者将函数指针传递给二分法函数 在头球我有 std::vector<double> F(); double F1(double m1, double m2); double F2(double m1, double m2); typedef double (MyClass::*MyClassFn)(double,double); double Bisection
std::vector<double> F();
double F1(double m1, double m2);
double F2(double m1, double m2);
typedef double (MyClass::*MyClassFn)(double,double);
double Bisection(MyClassFn fEval,double min, double max,std::vector<double> args);
bool Bisection2(MyClassFn fEval1,MyClassFn fEval2,double xmin, double xmax, double ymin, double ymax,double *ax, double *ay,std::vector<double> args);
我试着从这里寻求帮助
还检查了这些论坛中可能解决的不同问题,但仍然无法找出我做错了什么
谢谢。正如错误消息所说,您需要括号。这是因为函数调用的优先级高于
->*
运算符:
leftvalue = (pObj->*fEval)(auxilary, left);
^ ^
此外,您几乎肯定不应该在这里使用new
;您可以使用自动存储修复内存泄漏:
MyClass obj(-1);
leftvalue = (obj.*fEval)(auxiliary, left);
正如错误消息所说,您需要括号。这是因为函数调用的优先级高于
->*
运算符:
leftvalue = (pObj->*fEval)(auxilary, left);
^ ^
此外,您几乎肯定不应该在这里使用new
;您可以使用自动存储修复内存泄漏:
MyClass obj(-1);
leftvalue = (obj.*fEval)(auxiliary, left);
这只是一个优先事项:
与其做
pObj->*fEval(aux,左)
,不如做(pObj->*fEval)(aux,左)
这只是一个优先事项:
与其做
pObj->*fEval(aux,左)
,不如做(pObj->*fEval)(aux,左)
非常感谢!老实说,我用了相当长的时间重写和调试这些函数(天)。当我一开始应该问这个问题时,因为这基本上是我处理这些函数的第一个方法-非常感谢!老实说,我用了相当长的时间重写和调试这些函数(天)。当我一开始应该问这个问题,因为这基本上是我对这些函数的第一种方法时--,在Bisection
的定义中,参数fEval
被声明为具有MyClass
类型。这是不正确的。它应该是MyClassFn
,正如在Bisection
的声明中一样。在Bisection
的定义中,参数fEval
被声明为具有MyClass
类型。这是不正确的。它应该是MyClassFn
,就像在对分声明中一样。