在C++中使用函数指针时出现无效的转换错误
问题描述:
因此,我一直在努力尝试并与之奋斗了几个小时。我相对比较新的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;
}
您在这方面的善意帮助是非常感谢。 :)
答
cout << multTen(3,4,foo(3,4)) << endl;
// ^^^^^^^ calling function foo and it's return value is passed
// to multTen
的问题是,您所呼叫的mulTen
与foo
的返回值作为参数,而不是传递一个指针。
答
您的意思是?
cout << multTen(3,4,foo) << endl;
答
foo省略(3,4)。在您的代码示例中,您使用参数(3,4)调用foo函数并将返回值传递给multTen。