2010-07-07 6 views
0

Comment créer un pointeur de fonction qui prend un pointeur de fonction comme argument (C++) ??? j'ai ce codeCréer un pointeur de fonction qui prend un pointeur de fonction comme argument

#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

Vous voudrez peut-être envisager de garder vos noms de variables en anglais. Il sera plus facile pour les programmeurs étrangers (à vous) de comprendre votre code. Et je ne parle pas seulement des programmeurs anglophones. Juste une pensée. –

+0

ouais je sais, je l'avais traduit mais j'ai collé ce code par hasard, je viens de le remarquer. mais la réponse a aidé beaucoup – mbaam

Répondre

3

Vous devez utiliser le type de pointeur de fonction du type de paramètre:

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

ARGH! 1 minute d'intervalle! – MSN

+0

merci, maintenant cela fonctionne et je le comprends – mbaam

2

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

8

vous trouverez plus facilement typedef pointeurs de fonction.

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

c'est très utile, mais je ne suis pas encore autorisé à l'utiliser – mbaam

+0

Vous devez accepter la meilleure réponse, pas la réponse qui répond à certaines exigences non spécifiées. De rien quand même. – oscode

+0

Vous oubliez que "meilleur" peut être défini pour inclure "conforme à des exigences non spécifiées". – GManNickG

Questions connexes