0
申し訳ありませんが、私は完全なnoob質問を持っています。自分自身でそれを理解しようとしてきたが、私はちょうどGoogleの関連情報を見つけることができないようだ。関数クラスの乗算(加算、...)演算子のオーバーロード
私は、コードのこの部分を持っている、のはそのようにそれを置くましょう:
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が動作しないということで、問題は彼が掛けする方法を見つけ出すことができないということです2つのfの。わかりましたので、ここで私がやったことです:私は、私は自分自身を考え出し
auto linear = [](double x){return x;};
と
auto blub = function(linear);
例えば、ラムダ式を使用してコンストラクタを呼び出すだとprolly
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;};
は問題ありません。
誰にでも解決策がありますか?前もって感謝します。