大家帮我看一个指针数组调用函数的问题吧
#include <iostream>
using namespace std;
double add (double x,double y)
{
return x+y;
}
double subtraction (double x,double y)
{
return x-y;
}
double calculate ( double x,double y,double (*p[3])(double,double))//这样定义用错误吗
{
double *p[0](double,double)=add;//这里报错了,怎么也改不过来了
double *p[1](double,double)=subtraction;同上
return (*p)(x,y);
}
int main ()
{
double add (double x,double y);
double subtraction (double x,double y);
double calculate ( double x,double y,double (*p[2])(double,double));
double a,b;
cout<<"Please input figure:";
while (cin>>a>>b)
{
for (int i=0;i<2;i++)
{
cout<<calculate (a,b,p[i])<<endl;
}
cout<<"Please input figure:";
}
system("pause");
return 0;
}
[解决办法]
你的意思应该是输入两个数,然后对这两个数进行用户指定的操作吧(你例子中是加法和减法)。
需要进行的操作是通过函数指针数组参数传入的。在calculate函数中你要进行的只是计算,至于操作是哪些其实应该由外界来指定才是。
#include <iostream>
using namespace std;
double add(double x, double y)
{
return x + y;
}
double subtraction(double x, double y)
{
return x - y;
}
void calculate(double x, double y, double (*p[2])(double, double))
{
for (int i = 0; i < 2; ++i)
{
cout << p[i](x, y) << endl;
}
}
int main()
{
double (*p[2])(double, double) = { add, subtraction};
double a, b;
cout << "Please input figure:";
while (cin >> a >> b)
{
calculate(a, b, p);
cout << "Please input figure:";
}
system("pause");
return 0;
}