gpt4 book ai didi

c++ - 在 C++ 中,如何将对象的方法作为参数传递给函数?

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:17 25 4
gpt4 key购买 nike

所以,我有一个名为 Romberg 的函数,它将一个函数作为第一个参数:

int Romberg(double (*f)(double), ... );

执行时,它将传递的函数应用于多个值。

在一个类中,我定义了以下方法:

double Funktion::q(double x){
return(sqrt(1.0+fd(x)*fd(x)));
};
void Funktion::compute_bogen(){
Romberg(q, ... );
};

其中 fd 是同一类中的另一个方法。但是,这不起作用!我尝试通过以下方式更改代码,最终成功地将方法传递给 Romberg 函数;但是它无法应用传递的函数:

int Romberg(double (Funktion::* &f)(double), ... );

void Funktion::compute_bogen(){
Romberg(&Funktion::q, ... );
};

我收到以下错误消息:

error C2064: term does not evaluate to a function taking 1 arguments

现在,我不知道如何在不丢弃我构建的整个类系统的情况下使这项工作有效。

最佳答案

I get the following error message:

error C2064: term does not evaluate to a function taking 1 arguments

这是因为 Funktion::q secret 地接受了 2 个参数,一个 this 指针和一个 double

问题是 Romberg 没有关于在 Funktion::compute_bogen() 中调用它的对象的任何信息,所以它不能将它提供给函数::q()。你可能想要这样的东西:

typedef double (Funktion::*RombergFuncArg)(double)

int
Romberg(RombergFuncArg func, Funktion& obj, ... )
{
double input = 0.0;
double output = (obj.*func)(input);
//...
}

[编辑]回复评论:

void Funktion::compute_bogen(){
Romberg(&Funktion::q, *this, ... );
};

关于c++ - 在 C++ 中,如何将对象的方法作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com