[C++] Cast tra char

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

[C++] Cast tra char

Messaggio 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.
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: [C++] Cast tra char

Messaggio 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
Ultima modifica di paper0k il martedì 2 marzo 2010, 16:07, modificato 1 volta in totale.
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
Dahman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1013
Iscrizione: mercoledì 31 ottobre 2007, 8:29
Località: Torino

Re: [C++] Cast tra char

Messaggio 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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti