在C ++中使用函数指针时无效的转换错误

时间:2012-03-31 15:05:16

标签: c++

所以我一直在尝试与此斗争几个小时。我对c ++比较陌生,但是我读到了函数指针,它看起来非常有用。本质上,我在下面尝试做的是将两个整数值传递给函数foo,然后将它乘以10.但是,我不断收到以下错误:“从'int'无效转换为'int(*)(int ,int)'[-fpermissive]“。

#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 个答案:

答案 0 :(得分:3)

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

问题是您使用mulTen的返回值作为参数调用foo,而不是将指针传递给它。

答案 1 :(得分:2)

你的意思是?

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

答案 2 :(得分:2)

在foo上省略(3,4)。在您的代码示例中,您使用参数(3,4)调用foo函数并将返回值传递给multTen。