Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Allocare dinamicamente un vettore di puntatori a funzione
Forum - C/C++ - Allocare dinamicamente un vettore di puntatori a funzione

Avatar
andrex91 (Member)
Pro


Messaggi: 101
Iscritto: 01/05/2009

Segnala al moderatore
Postato alle 23:36
Venerdì, 25/02/2011
Buona sera,

nel mio programma avrei bisogno di allocare dinamicamente un vettore di puntatori a funzione.

Partendo dal dichiarare una funzione di tipo void:

Codice sorgente - presumibilmente C/C++

  1. void action_0();



ho poi proceduto in questo modo:
Codice sorgente - presumibilmente C++

  1. //puntatore a funzione di tipo void
  2. void (*action)();
  3. //allocazione dinamica del vettore
  4. action= ( void(*)() )malloc( 7* sizeof ( void (*)() ) );



Ora che ho allocato lo spazio il vettore dovrei poter riuscire a lavorarci:
Codice sorgente - presumibilmente Plain Text

  1. action[0]=action_0;



Il compilatore mi genera però il seguente errore:
subscript requires array or pointer type

Ho provato a fare ulteriori ricerche su internet ma non ho trovato alcun caso che sia simile al mio.
Grazie in anticipo per l'aiuto




PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 0:35
Sabato, 26/02/2011

allora meglio fare così:

Codice sorgente - presumibilmente C/C++

  1. // Dichiarazione di tipo puntatore a funzione void
  2. typedef void( * ActionType) (void);
  3.  
  4. // Dichiarazione array di puntatori a funzioni void
  5. ActionType *pActions = (ActionType *)malloc(7 * sizeof(ActionType));
  6.  
  7. // Assegnamento
  8. pActions[0] = action;
  9.  
  10. // Chiamata
  11. pActions[0]();



ricontrolla il codice perchè l'ho scritto direttamente sul forum, a grandi linee dovrebbe funzionare :)

perfetto, funziona correttamente - andrex91 - 26/02/11 10:00
grazie dell'aiuto :) - andrex91 - 26/02/11 10:00
PM