Un puntatore a funzione è , in sostanza , solo un puntatore a una funzione . In linguaggi come C + + , ogni funzione e variabile in un programma per computer esiste un indirizzo di memoria , e una variabile può contenere il valore di tale indirizzo. Tale variabile può essere passato a un callback , che può quindi chiamare la funzione che i punti variabili . Può anche essere utilizzato in un gestore evento , o per l'associazione tardiva di una funzione membro . Grazie alla loro sintassi complicata , puntatori a funzione sono spesso evitati dai programmatori , ma possono essere utilizzati per realizzare facilmente molti compiti potenti . Cose che ti serviranno 
 compilatore C + + 
 Mostra più istruzioni 
 1 
 scrivere un programma C + + . Questo è il programma in cui si intende utilizzare un puntatore a funzione . 
 2 
 Definire un puntatore a funzione . Si può fare questo uno dei diversi modi . Dichiarare una funzione , come ad esempio: 
 
 vuoto doSomething ( int data); 
 
 e poi dichiarare un puntatore ad esso . In alternativa , è possibile dichiarare una funzione come un puntatore : 
 
 void ( * doSomething ) ( int); 
 
 Infine , è possibile dichiarare un typedef , quindi creare una variabile di quel tipo < br . > 
 typedef void ( * voidTakingInt ) ( int); 
 
 È ora possibile utilizzare " voidTakingInt " come tipo : 
 
 vuoto doSomething ( int data ) ; voidTakingInt fun_ptr = & doSomething ; 
 
 3 
 dichiarare qualcosa che utilizza il puntatore a funzione . Questo sarà spesso qualcosa che utilizza il puntatore funzione come funzione callback , in modo che quando si verifica un evento specifico , la funzione esegue la funzione . Un esempio è una funzione di file - caricamento che prende una funzione di callback per indicare il progresso . 
 4 
 Chiamare la funzione dal puntatore ad esso. Ciò avverrebbe all'interno della funzione che hai scritto che accetta un puntatore a funzione come parametro : 
 
 vuoto doSomething ( int data) { } 
 
 vuoto callAnotherFunction (void ( * otherFunction ) (int ) ) { 
 
 ( * otherFunction ) ( 3) ; 
 
 } 
 
 int main ( int argc , char * argv [ ] ) { 
 
 callAnotherFunction ( & doSomething ) ; return 0; }