【发布时间】:2019-05-11 05:39:57
【问题描述】:
我需要将一个类成员函数“curve”发送到另一个函数“fun”,但在编译过程中出现错误。如何正确编码?
使用地址“&”导致 C2276,不使用它 - C3867。
class Test
{
public:
double v;
double curve(double x)
{
return x + v;
}
Test(double z)
{
v = z;
}
};
double fun(double(*f)(double), double x)
{
return f(x);
}
void main()
{
Test d(2.0);
double r = fun(&d.curve, 3.0);
}
【问题讨论】:
-
您可能需要使用
std::bind,或者更好的是,只需调用函数的 lambda。 -
好的,我试过
auto f = [&](double x) {return d.curve(x); }; double r = fun(f, 3.0);但这会导致 C2664
标签: c++ class compiler-errors