函数指针做形参带的形参不能使用例如:
#include <iostream>
using namespace std;
int sum(int a, int b)
{
return a + b;
}
//形参只是声明了有一个int(*pf1)(int, int)类型的函数函数指针,这里的abcd可以省略,
//没有实际意义,两个int就说明了这是指向一个带有两个int参数和返回一个int值得函数指针。
int sum_sum(int(*pf1)(int a, int b), int(*pf2)(int c, int d))
{
return (*pf1)(a, b) + (*pf2)(c, d);//报错a,b,c,d未声明
}
int main()
{
//在sum(1,2)和sum(3,4)报错"int" 类型的实参与 "int (*)(int a, int b)" 类型的形参不兼容
//原因是sum(1,2)返回的是一个int类型的值,sum_sum函数的形参是int(*pf1)(int a, int b)指针。
cout << "sum_sum=" << sum_sum(sum(1,2), sum(3,4)) << endl;
cin.get();
return 0;
}
那么我们该如何使用函数指针做形参带的参数呢?
有一个笨办法,那就是在调用这个函数指针做形参的函数中再加几个形参,这样就可以了。