2012-03-31 83 views
1

因此,我一直在努力嘗試並與之奮鬥了幾個小時。我相對比較新的C++,但我讀了關於函數指針,它看起來很有用。基本上,我在下面試圖做的是將兩個整數值傳遞給函數foo,然後乘以10.但是,我不斷收到以下錯誤:「從'int'無效轉換爲'int(*)(int ,int)'[-fpermissive]「。在C++中使用函數指針時出現無效的轉換錯誤

#include <iostream> 

using namespace std; 

int foo(int nX, int nY){ 
    return nX*nY; 
} 


int multTen(int a, int b, int (*Fn)(int, int)){ 
    return 10*Fn(a,b); 
} 

int main(){ 
    cout << multTen(3,4,foo(3,4)) << endl; 
} 

您在這方面的善意幫助是非常感謝。 :)

回答

3
cout << multTen(3,4,foo(3,4)) << endl; 
       // ^^^^^^^ calling function foo and it's return value is passed 
       // to multTen 

的問題是,您所呼叫的mulTenfoo的返回值作爲參數,而不是傳遞一個指針。

2

您的意思是?

cout << multTen(3,4,foo) << endl; 
2

foo省略(3,4)。在您的代碼示例中,您使用參數(3,4)調用foo函數並將返回值傳遞給multTen。