重载函数类

时间:2016-04-05 13:17:25

标签: c++ function operator-overloading

很抱歉,但我有一个完整的noob-question。一直试图弄清楚自己,但我似乎无法在谷歌上找到相关信息。

让我们这样说,我有这段代码:

class function
{
public:
    double (*f)(double x);
    function(double f(double x)): f(f){}
    double evalf(double x){
        return this->f(x);
    };
    function operator*(const function& other) const {
        return function(this->f*other.f);
    };
};

问题是* -overload不起作用,问题在于他无法弄清楚如何将两个f相乘。好的,这就是我所做的:我使用lambda表达式调用构造函数,例如

auto linear = [](double x){return x;};

auto blub = function(linear);

我自己想通了

return function(this->f*other.f);

很多人都没有工作,所以我尝试的是

auto mul = [&](double x){return this->f(x) * other.f(x);};
return function(mul);

但这也不起作用。 有趣的是它似乎在功能类之外工作。

auto mul = [](double x){return linear*linear;};

工作正常。

有人为我提供解决方案吗?提前谢谢。

0 个答案:

没有答案