从类成员函数返回函数指针
Return a function pointer from a class member function
我有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,我想从成员函数返回它。所以。。。
我不知道代码的最后一行是否定义了我想要定义的内容,但我写的时候考虑到了这个答案返回函数指针类型。
如果最后一行是正确的,那么我想知道如何在
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; };
}
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量