PDA

Visualizza la versione completa : [C++] Cast di oggetti differenti presenti in matrici


bugino88
16-02-2011, 11:13
Ciao a tutti.
Ho un problema nel fare il cast da un tipo a un altro.
Ho 2 matrici, dove la prima è piena di oggetti di tipo uno, e la seconda e piena di oggetti di tipo 2.
Devo fare un metedo che mi permetta di passare queste due matrici e fare il cast da un tipo all'altro.
L ho fatto tramite costruzione di un predicato, ma rimane troppo statico come metodo, e mi servirebbe una cosa molto più generica.

Grazie per l'aiuto!

lolide
16-02-2011, 11:32
Questi tipi che tipo primario ridefiniscono ?

Se sono oggetti, puoi fare un cast solamente se questi due oggetti estendono una classe base comune, e castarli alla classe base non tra l'uno e l'altro.

Se sono tipi primari il cast sarebbe più facile, però devi considerare i troncamenti di byte che puoi avere.

bugino88
16-02-2011, 11:56
il tipo di valori che posso inserire all'interno della matrice dipende dal test che voglio fare....
esempio test 1....creo matrice uno di tipo double
creo matrice due di tipo int
questo metodo deve castarmi la prima matrice nel tipo della seconda....

test 2 posso fare il contrario ecc...

lolide
16-02-2011, 19:39
Rieccomi.
Ero senza compilatore, non potevo provare il codice e volevo assicurarmi che funzionasse.

Comunque per fare questo sicuramente devi usare i template perchè non sai a priori i tipi degli oggetti.

Poi usa un reinterpreter_cast a cui non importa se sono compatibili i tipi, fa solo una copia byte per byte della matrice in quella di destinazione.



template <class T1, class T2> void funzione (T1 **matrice1, T2 **matrice2) {
T2 **asd = reinterpret_cast<T2**>(matrice1);
}

int main ()
{
double **matrice1;
int **matrice2;

funzione(matrice1, matrice2);
}

Loading