28/05/12 14:21
MagoAntò
Ciao a tutti!
Immaginiamo di avere questa situazione:
Classe B è sottoclasse di A ed entrambe definiscono un certo "metodo_".
In particolare, il corpo di metodo_B è questo:
In parole povere, in metodo_B ci sono tre puntatori x, y e z dello stesso tipo della classe che vengono castati al tipo della superclasse all'atto della chiamata di metodo_A. Fin qui, tutto ok. Il problema nasce nel momento in cui i tre puntatori vengono modificati nel corpo di metodo_A. Ho bisogno, in pratica, di farmi restituire i nuovi valori dei puntatori. Ho pensato, così, di utilizzare dei puntatori a puntatori. I codici diventano:
...e...
Il compilatore mi da errore nel caso usassi lo static_cast, suggerendomi di usare il reinterpret_cast che, però, non credo sia la scelta più elegante, seppur funzionante.
Avete dei suggerimenti alternativi da darmi?
Grazie in anticipo!
Immaginiamo di avere questa situazione:
class A { void metodo_A (tipoA* x, tipoA* y, tipoA* z); }; class B : public class A { void metodo_B (); };
Classe B è sottoclasse di A ed entrambe definiscono un certo "metodo_".
In particolare, il corpo di metodo_B è questo:
void class B::metodo_B () { tipoB* x, y, z; x=NULL; y=NULL; z=NULL; class A::metodo_A (cast2tipo_A (*x), cast2tipo_A (*y), cast2tipo_A (*z)); // esegui altre operazioni su x, y e z }
In parole povere, in metodo_B ci sono tre puntatori x, y e z dello stesso tipo della classe che vengono castati al tipo della superclasse all'atto della chiamata di metodo_A. Fin qui, tutto ok. Il problema nasce nel momento in cui i tre puntatori vengono modificati nel corpo di metodo_A. Ho bisogno, in pratica, di farmi restituire i nuovi valori dei puntatori. Ho pensato, così, di utilizzare dei puntatori a puntatori. I codici diventano:
class A { void metodo_A (tipoA** x, tipoA** y, tipoA** z); }; class B : public class A { void metodo_B (); };
...e...
void class B::metodo_B () { tipoB* x, y, z; x=NULL; y=NULL; z=NULL; class A::metodo_A (cast2tipo_A** (&x), cast2tipo_A** (&y), cast2tipo_A** (&z)); // esegui altre operazioni su x, y e z }
Il compilatore mi da errore nel caso usassi lo static_cast, suggerendomi di usare il reinterpret_cast che, però, non credo sia la scelta più elegante, seppur funzionante.
Avete dei suggerimenti alternativi da darmi?
Grazie in anticipo!
Ultima modifica effettuata da MagoAntò 28/05/12 14:23
aaa