在非静态类中,我可以直接传递如下的函数成员rhs吗?它报告了一些错误。我也试图将其更改为mystepper.do_step(this->rhs)
它仍然不起作用。但如果我把mystepper.do_step(rhs);
放在主函数中,而rhs作为一个函数,它就可以正常工作。我该如何解决这个问题?非常感谢!传递函数成员作为类C++中的参数
void Animal::rhs(const double x , double &dxdt , const double t) {
dxdt = 2*t;
};
void Animal::response() {
mystepper.do_step(rhs);
}
我做了一些最低限度的代码来说明我以前question.Your帮助表示高度赞赏!
#include <iostream>
using namespace std;
class ABC{
private:
int x =3;
int add2num(int a, int b){
return a+b+x;
}
int worker(int &fun(int a, int b), int a, int b){
return fun(a,b);
}
public:
int doSomething(int a, int b){
return worker(add2num, a, b);
}
};
int main() {
ABC test;
cout << test.doSomething(3,5) << endl;
return 0;
}
使它成为'静态'。 – StoryTeller
使它成为'静态函数'或使用'std :: bind'''lambda函数'来知道它应该被调用的对象。 – paweldac
它通过改变rhs作为静态函数来工作!但是,如果我在动物发起的不同实例中有不同的rhs中有多个参数,那该怎么办呢?任何其他方式使代码工作,而不改变rhs作为静态函数? – drbombe