2016-06-13 12 views
1

ファンクタの使用に問題があります。 以下は、任意の関数を取り、その関数の値と導関数を返すファンクタを示しています。 C++ファンクタに関数を渡す

template <class T> 
struct Funcd { 
    T &func; 
    double f; 
    Funcd(T &funcc) : func(funcc) {} 
    double operator() (double &x) 
    { 
     return f=func(x); 
    } 

    void df(double &x, double &df) 
    { 
     ... 
    } 
}; 

は、私はすでに私はこのファンクタを利用する方法がわからないということです

double FunctionA(double &x){ 
    return x*x; 
} 

私の質問のような機能を持っていると仮定します。 誰でもこの関数を使用して関数の値と導関数を見つけるmain関数の例を作ることができますか? ありがとう!

+6

使用方法がわからないテンプレートを作成したのはなぜですか? –

+0

'df'の実装が欠落しているようです。そしてなぜあなたは 'double 'の周りを渡しますか? –

答えて

0

作成時にファンクタに追加します。私はどうしたらあなたの例のように同じ関数名を使用して、以下:その後、

Funcd fd(FunctionA); 

することができますあなたの関数としてfd

double v = fd(2); 

は、それはあなたがたときにテンプレート引数を指定する必要がいるかもしれませんfdを作成しても、私はこのコードをコンパイルまたはテストしていません。

+1

クラステンプレートは(まだ)引数を推論できないので、 'Funcd 'と書く必要があります。 – Quentin

+0

ご返信ありがとうございます。あなたが正しいのは、引数をFuncd として指定する必要があるということです。再度、感謝します –

関連する問題