1

教授から渡された .h ファイルには、次のように書かれています。

    double operator()(double x) const;

オーバーロードのポイントは、x を double として読み取り、それを使用して、クラス オブジェクト 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 に答える