2013-11-21 193 views
1

我的編譯器給出了以下錯誤。請幫助我的語法。如何將函數作爲參數傳遞給C++中的另一個函數?

int sum(int a, int b); 
int sum(int a, int b) { 
    return a+b; 
} 

int mult(int c, std::function<int(int a, int b)> sum2); 
int mult(int c, std::function<int(int a, int b)> sum2) { 
    return sum2 * c; 
} 

int main() { 
    cout << mult(5, sum(2, 2)); 
    return 0; 
} 
+3

你試圖做太多。我懷疑你是否知道函數的基礎知識。我建議你先閱讀基礎知識。 – Nawaz

+3

「我的編譯器給出了以下錯誤」...這是代碼... – parrowdice

回答

1

你使用它都錯了,你不應該呼叫sum函數中調用mult,而是你怎麼稱呼它mult

int mult(int c, std::function<int(int a, int b)> sum2) { 
    return sum2(2, 2) * c; 
} 

int main() { 
    cout << mult(5, sum); 
    return 0; 
} 

你現在正在做的是通過調用mainsum的結果,並且結果是一個整數而不是函數。

+0

謝謝,我現在明白我的錯誤。 – pizzaEatingGuy

0

您沒有將該函數作爲參數傳遞。您正在傳遞函數的返回值。將mult的第二個參數改爲int。

0

實際上,您將值4傳遞給函數mult。你應該這樣做,而不是:

mult (5, sum); 
0

有這麼多的錯誤:

  1. 失蹤#include <iostream>#include <functional>
  2. cout應該std::cout
  3. 乘以仿函數與詮釋是沒有意義的,因爲這樣的運算符*未定義。嘗試例如這樣的:

    int mult(int c, std::function<int(int a, int b)> sum2) { 
        return sum2(2,2) * c; 
    } 
    int main() { 
        std::cout << mult(5, sum); 
    } 
    
相關問題