2010-07-07 141 views
0

如何创建一个函数指针作为参数(C++)? 我有这样的代码创建一个将函数指针作为参数的函数指针

#include <iostream> 
using namespace std; 

int kvadrat (int a) 
{ 
    return a*a; 
} 
int kub (int a) 
{ 
    return a*a*a; 
} 
void centralna (int a, int (*pokfunk) (int)) 
{ 
    int rezultat=(*pokfunk) (a); 
    cout<<rezultat<<endl; 

} 

void main() 
{ 
    int a; 
    cout<<"unesite broj"<<endl; 
    cin>>a; 
    int (*pokfunk) (int) = 0; 
    if (a<10) 
     pokfunk=&kub; 
    if (a>=10) 
     pokfunk=&kvadrat; 

    void (*cent) (int, int*)=&centralna; // here i have to create a pointer to the function "centralna" and call the function by its pointer 

    system ("pause"); 
} 
+0

你可能想考虑保留你的英文变量名。外国(你)的程序员会更容易理解你的代码。我不只是谈论讲英语的母语程序员。只是一个想法。 – 2010-07-07 22:55:38

+0

是的,我知道,我已经翻译过它,但我偶然粘贴了这段代码,我刚刚注意到它。但回复很有帮助 – mbaam 2010-07-07 22:59:53

回答

3

您需要使用的函数指针类型作为参数的类型:

void (*cent) (int, int (*)(int)) = &centralna 
+2

ARGH!相隔1分钟! – MSN 2010-07-07 22:51:11

+0

谢谢你,现在它可以工作,我理解它 – mbaam 2010-07-07 22:59:28

2

void (*cent)(int,int (*) (int))=&centralna;

8

,你会发现很容易的typedef函数指针。

typedef int (*PokFunc)(int); 
typedef void (*CentralnaFunc)(int, PokFunc); 
... 
CentralnaFunc cf = &centralna; 
+0

这是非常有用的,但我还没有使用它 – mbaam 2010-07-07 23:02:26

+0

你应该接受最好的答案,而不是满足一些未明确要求的答案。无论如何您都欢迎。 – oscode 2010-07-07 23:09:46

+0

你忘了“最好”可能被定义为包括“符合未指定的要求”。 – GManNickG 2010-07-07 23:16:13