2016-06-13 92 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; 
} 

我想問一個功能是,我不知道如何利用這個函子的。 任何人都可以在使用此函子來查找函數值和派生函數的主函數中做出例子嗎? 謝謝!

+6

爲什麼你寫了一個你不知道如何使用的模板? –

+0

'df'的執行似乎丟失。你爲什麼要繞過'雙'&'? –

回答

0

您在創建它時將它添加到仿函數中。使用相同的函數名作爲你的例子,我將做到以下幾點:

Funcd fd(FunctionA); 

那麼你可以在你fd作爲一個函數:

double v = fd(2); 

這可能是因爲你必須指定模板參數時雖然創建fd,但我還沒有編譯或測試過這段代碼。

+1

類模板不能推導出參數(所以),所以你必須編寫'Funcd '。 – Quentin

+0

感謝您的回覆,它是正確的!你是對的,需要將參數指定爲Funcd 。再次感謝 –