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.
[C++] Cast tra char
- Spiros
- Entusiasta Emergente

- Messaggi: 1100
- Iscrizione: martedì 21 marzo 2006, 15:11
- Località: Zurigo
[C++] Cast tra char
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Re: [C++] Cast tra char
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
---edit
La questione è stata chiarita con l'autore, quindi la discussione viene riaperta
Ciao
Ultima modifica di paper0k il martedì 2 marzo 2010, 16:07, modificato 1 volta in totale.
-
Dahman
- Entusiasta Emergente

- Messaggi: 1013
- Iscrizione: mercoledì 31 ottobre 2007, 8:29
- Località: Torino
Re: [C++] Cast tra char
Perché unsigned (o signed) char* e char* sono considerati 2 tipi diversi senza nessuna "parentela" fra di loro.Non è un problema grave, ma vorrei capire come mai avviene questo.
Dovrai usare un cast esplicito. reinterpret_cast in questo caso.
ciao
dahman
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti
