2016-12-04 125 views
1

那么,基本上我已经浏览了所有的关于这个问题,并找不到我的答案。功能在另一个功能参数

这是我的代码,它可以计算平方,立方体,数字的四分之一。但是,尝试输出答案时出现错误。

#include <iostream> 

using namespace std; 
int square (int); //n^2 
int cube (int); //n^3 
int fourth (int); //n^4 
void powerN(int x[], const int sizex, void(*select)(int)) 
{ 
    cout<< x[sizex]; 
    cout<<" to the power of "<<sizex+2<<" is "; 
    cout<<(*select)(x[sizex])<<endl; 
} 
int square (int a) 
{ 
    return a*a; 
} 
int cube (int b) 
{ 
    return b*b*b; 
} 
int fourth (int c) 
{ 
    return c*c*c*c; 
} 
int main() 
{ 
    int a[3]={3,4,5}; 
    for (int aSize=0;aSize<3;a++){ 
    powerN (a, aSize, square); 
    powerN (a, aSize, cube); 
    powerN (a, aSize, fourth); 
    } 
} 
+2

_but,那里试图输出时answer._和错误是一个错误?这是一个秘密吗? –

+0

同上,错误消息的存在是有原因的:帮助你找出造成错误的原因!总是,总是,_always_在你的问题中包含任何错误信息。 – qxz

回答

0
  1. 函数指针参数select的类型不正确。您声明其返回类型为void,不能为cout ed。返回值应该是int

    void powerN(int x[], const int sizex, int(*select)(int)) 
    //         ~~~ 
    
  2. 的在main()循环,a++应该aSize++

LIVE