2010-03-31 5 views
0

Quelqu'un peut-il m'aider avec ce code simple ??erreur de pointeur de fonction

#include <iostream> 
using namespace std; 

void testFunction(){ 
    cout<<"This is the test function 0"<<endl; 
} 

void testFunction1(){ 
    cout<<"This is the test function 1"<<endl; 
} 

void testFunction2(){ 
    cout<<"This is the test function 2"<<endl; 
} 

void (*fp[])()={testFunction,testFunction1,testFunction2}; 

int main(){ 

    //fp=testFunction; 
    (*fp[testFunction1])(); 
    //cout<<"Addrees of the function pointer is:"<<*fp; 
} 

Je reçois l'erreur suivante:

error: invalid types `void (*[3])()[void()()]' for array subscript| 
+1

qui est vraiment des choses mal, par la manière. –

Répondre

7

Vous essayez d'utiliser un pointeur de fonction en tant qu'index de tableau. Cela ne volera pas, les indices de tableau doivent être entiers.

Pour appeler via un pointeur de fonction, il suffit d'appeler:

(*fp[1])(); 

ou

fp[1](); 

fonctionnera (même plus court!).

+0

Merci ... je ne sais pas comment j'ai raté ça. – Jony

2

Je pense que vous vouliez écrire:

(*fp[1])(); 

C'est, vous indexez le tableau avec un int plutôt que la fonction elle-même .

2

Votre indexation tableau fp de fonctions avec un pointeur de fonction, essayer quelque chose comme:

(*fp[some_index])(); 

à la place