Precedente :: Successivo |
Autore |
Messaggio |
saetta Eroe in grazia degli dei

Registrato: 25/02/08 11:52 Messaggi: 129
|
Inviato: 18 Set 2008 12:10 Oggetto: [c] print personalizzata |
|
|
Ciao, domandina-fantasia...
Se ho 3 struct: a, b, c ovviamente diverse e volessi però implementare una funzione di stampa unica per le 3, come faccio a distinguere con certezza che si tratti di una piuttosto che di un'altra?
Codice: |
int my_print( parametro???)/*potrebbe essere un void * */
{
se (parametro == struct a)
{
stampa a->campo_1;
...
stampa a->campo_n;
}
se (parametro == struct b)
{
stampa b->campo_1;
...
stampa b->campo_n;
}
se (parametro == struct c)
{
stampa c->campo_1;
...
stampa c->campo_n;
}
} |
in java avrei detto "if(parametro instanceof struct a)", giusto???
In c, non so come fare tale controllo, e non credo di potermi basare sull'operatore sizeof in quanto 2 strutture potrebbero anche avere lo stesso risultato "sizeof", difficile, ma non impossibile.
GRAZIE!!! |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 18 Set 2008 14:20 Oggetto: |
|
|
ANSI C purtroppo non fornisce nessuna funzione e nessun operatore per stabilire il tipo di una variabile.
Secondo me fai prima a scrivere tre funzioni differenti, una per ogni tipo di struct |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 18 Set 2008 19:48 Oggetto: |
|
|
freemind ha scritto: | Secondo me fai prima a scrivere tre funzioni differenti, una per ogni tipo di struct | O se proprio vuoi avere una funzione sola,
puoi passare alla funzione un'altra variabile che indichi quale tipo di struct sia,
e poi differenziare con uno switch o altro modo.
Ma non so quanto ne valga la pena. |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 19 Set 2008 13:47 Oggetto: |
|
|
Non sarebbe male creare una funzione da mettere in qualche libreria che implementi la possibilità di risalire al tipo di una variabile.
Qualche versione non ANSI lo fa... |
|
Top |
|
 |
|