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

Invalid Conversion Error When Using Function Pointers in C++

本文关键字:无效 转换 错误 指针 C++ 函数      更新时间:2023-10-16

所以我已经尝试并与之斗争了几个小时。我对c++还比较陌生,但我读过函数指针,它看起来很有用。从本质上讲,我下面要做的是将两个整数值传递给函数foo,然后将其乘以10。然而,我一直收到以下错误:"从'int'到'int(*)(int,int)'的转换无效[-fpermission]"。

#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。