Ciao a tutti!
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!