我有一个 AbstractOdeSolver 类,如下所示:
class AbstractOdeSolver
{
private:
double (*rightHandSide)(double y,double t);
public:
AbstractOdeSolver(int nop,double initime, double fintime, double initval, double(*pf)(double,double));
double (*GetRightHandSide)(double y, double t)();
};
所以我有一个带有私有成员函数指针的类,即 rightHandSide,我想从成员函数中返回它。所以 ...
我不知道代码的最后一行是否定义了我想要定义的内容,但我写这个答案时想到了Returning function pointer type。
如果最后一行是正确的,那么我想知道如何在AbstractOdeSolver.cpp
? 我试过了:
double (*AbstractOdeSolver::GetRightHandSide)(double y, double t)()
但这甚至不被编辑器(Kdevelop)接受,我认为经过一个小的修改,它被称为指向成员函数的指针,而不是指向函数的指针。
请注意,我想返回一个指向函数的指针,该函数接受两个双精度值并返回一个双精度值,如果无法完成,则可以。
IIUC你要什么,最简单的方法是使用typedef
:
class AbstractOdeSolver
{
public:
typedef double (*FSolver)(double, double);
....
FSolver GetRightHandSide();
};
....
AbstractOdeSolver::FSolver AbstractOdeSolver::GetRightHandSide()
{
// just for an example:
return +[](double, double) -> double { return 0.0; }
}
同样没有typedef
:
class AbstractOdeSolver
{
public:
double (* GetRightHandSide())(double, double);
};
double (*AbstractOdeSolver::GetRightHandSide())(double, double)
{
return +[](double, double) -> double {return 0.0; };
}
并使用@ Jarod42 建议的尾随返回类型:
class AbstractOdeSolver
{
public:
auto GetRightHandSide() -> double (*)(double, double);
};
auto AbstractOdeSolver::GetRightHandSide() -> double (*)(double, double)
{
return +[](double, double) -> double {return 0.0; };
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句