Pagina 1 di 1

[C++] Cast tra char

Inviato: lunedì 1 marzo 2010, 21:16
da Spiros
Nella costruzione di una libreria ho bisogno di usare alcuni array byte per byte. Per assicurare la compatibilità tra compilatori e sistemi differenti ho pensato di fare un typedef del genere: typedef signed char byte. In questo modo so che quando uso il tipo byte viene riconosciuto universalmente come signed char e ogni tipo di problemi di compatibilità sono evitati, almeno in questo campo. Però quando poi uso un array di tipo byte per scrivere su uno stream di output tramite il metodo write (per esempio fstream::write), avviene un errore di compilazione: il compiler non riesce a fare il cast da byte* a char*. Lo stesso avviene se al posto di signer char uso unsigned char nel typedef. Se invece nel typedef metto semplicemente char (cosa che però mi è del tutto inutile se non posso specificare signed o unsigned), il problema ovviamente non si presenta.

Non è un problema grave, ma vorrei capire come mai avviene questo.

Re: [C++] Cast tra char

Inviato: lunedì 1 marzo 2010, 21:25
da paper0k
Hai già una discussione aperta sul "cast", perché aprirne una nuova?

---edit

La questione è stata chiarita con l'autore, quindi la discussione viene riaperta

Ciao

Re: [C++] Cast tra char

Inviato: mercoledì 3 marzo 2010, 9:32
da Dahman
Non è un problema grave, ma vorrei capire come mai avviene questo.
Perché unsigned (o signed) char*  e char* sono considerati 2 tipi diversi senza nessuna "parentela" fra di loro.
Dovrai usare un cast esplicito. reinterpret_cast in questo caso.

ciao
dahman