Ciao, prego ammirate la magnificenza di questa risposta ! compila e funge (ovviamente) Simone Piunno wrote: > giovedì, 24 maggio 2001 alle 20:11:31, Roberto A. F. ha scritto: > > > se ho una funzione del tipo > > > > int priv_variable(int flag, int val) { > > static int mia_var = 0; > > > > switch(flag) { > > case SET: > > mia_var = val > > break; > > > > case GET: > > } > > > > return mia_var > > } > > > > cioe` che incapsuala una variabile (o una serie) e avessi voglia di > > allocarmi dinamicamente un buffer di queste funzioni del tipo > > (che tipo devo usare ? function ?) * mio_buffer[10]; > > for(i = 0; i < 10; i++) mio_buffer[i] = (function *)malloc( > > sizeof(priv_variable) ); > > al limite un buffer di puntatori a funzione. > devi usare il tipo della funzione e lavorare di parentesi per far > capire al compilatore come stanno le cose (le parentesi hanno > precedenza su tutti gli altri operatori). > > int (mio_buffer)()[10]; > > la malloc non la puoi e non la devi fare. > in ogni caso se stai cercando di fare tante mia_var non ce la farai. > C non è a oggetti. > Invece puoi fare questo: > > #include <stdio.h> > > typedef struct { > char *nome; > int (*esegui)(int a, int b); > } operazioni; > > int somma(int a, int b) { return a+b; } > int sottrazione(int a, int b) { return a-b; } > int prodotto(int a, int b) { return a*b; } > > static operazioni op[] = { > { "sommando", somma }, > { "sottraendo", sottrazione }, > { "moltiplicando", prodotto }, > { NULL, NULL } > }; > > int main(int argc, char **argv) { > int a = 1, b = 2; > int i; > operazioni *p = op; > > while (p->nome) { > printf( > "%s %d e %d si ottiene %d\n", > p->nome, > a, b, (p->esegui)(a, b) > ); > p++; > } > return 0; > } > > Se invece stavi parlando di C++ allora IMHO stai sbagliando design. > > -- > Di NO! alla censura su internet. > Firma la petizione di Punto-Informatico. > http://www.punto-informatico.it/petizione.asp > > _______________________________________________ > Lista devel - devel@xxxxxxxxxxxxxxxx > http://mailman.ferrara.linux.it/listinfo/devel -- ,__ ,_ ,___ .-------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-. ||_) ||\ ||_ / Proud Member & Master of the LUGGE | || \ ||¯\ ||¯ linuxgrp: http://lugge.ziobudda.net | ¯¯ ¯° ¯¯ ¯° ¯¯ ° homepage: http://digilander.iol.it/robang | \ Roberto A. Foglietta icq uin : 1087 18 257, E=s*aurimento² | `---------------------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-' Contro la censura on-line firma la petizione: http://www.punto-informatico.it/petizione.asp Art. 21. Tutti hanno diritto di manifestare liberamente il proprio pensiero con la parola,lo scritto e ogni altro mezzo di diffusione. La stampa non può essere soggetta ad autorizzazioni o censure. Art. 33. L'arte e la scienza sono libere e libero ne è l'insegnamento. Estratto della Costituzione italiana.