2012-03-31 12 views
1

これで、数時間前からこれを試して戦ってきました。私は比較的新しいC++ですが、関数ポインタについては読んでいて、かなり役に立ちました。基本的には、以下では、関数fooに2つの整数値を渡し、それに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 

問題は、パラメータとして代わりに、それへのポインタを渡すfooの戻り値とmulTenを呼び出しているということです。

2

あなたはこれを意味しましたか?

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

(3,4)をfooで省略します。コードサンプルでは、​​パラメータ(3,4)を指定してfoo関数を呼び出し、戻り値をmultTenに渡しています。

関連する問題