1

在我的教授给我的 .h 文件中,他写道

    double operator()(double x) const;

重载的要点是将 x 作为双精度读入并使用它来评估存储在类对象 Term 中的多项式。我在类实现中提出的是

    double operator()(double x) const
    {   double result = 0.0;
        for (int i = 0; i < getSize(); i++)
            result += (getCoeff(i) * pow(x, getExponent(i)));
        return result;
    }

我如何从应用程序中调用它?我试过不同的电话,比如

    Polynomial p;
    p.operator(x);

或者

    Polynomial::operator(x);

或者

    operator(x);

但编译时总是出错。

4

1 回答 1

4

通常的形式是调用它,就好像你的实例是一个函数:

double x = 3.1416;
Polynomial p;
double y = p(x);

或者,您可以显式调用运算符:

double x = 3.1416;
Polynomial p;
double y = p.operator()(x);

这是一个简化的示例:

#include <iostream>

struct Foo
{
  double operator()(double x) const { return x*2; }
};

int main()
{
  Foo f;
  std::cout << f(2.5) << std::endl;
}
于 2013-10-03T05:36:52.003 回答