[C++] Cast tra char
Inviato: lunedì 1 marzo 2010, 21:16
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.
Non è un problema grave, ma vorrei capire come mai avviene questo.