2010-07-07 188 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