MagoAntò (Normal User)
Rookie
Messaggi: 42
Iscritto: 07/02/2009
|
Ciao a tutti!
Immaginiamo di avere questa situazione:
Codice sorgente - presumibilmente C++ |
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:
Codice sorgente - presumibilmente C/C++ |
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:
Codice sorgente - presumibilmente C++ |
class A { void metodo_A (tipoA** x, tipoA** y, tipoA** z); }; class B : public class A { void metodo_B (); };
|
...e...
Codice sorgente - presumibilmente C/C++ |
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ò il 28/05/2012 alle 16:23 |