Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    26

    [C++] "reinterpet_cast"

    ciao, devo scrivere su un file binario che interpreto come composto da N interi, un intero, in una posizione che ottengo grazie ad una funzione int getLocation() che non scrivo per evitare di essere inutilmente prolisso, ritorna semplicemente una posizione.

    "value" è un parametro definito nella parte privata della funzione

    fstream inFile;

    la funzione che devo scrivere, fa parte di una classe (la stessa di getLocation()).

    void NomeClasse::writeInteger()
    {

    inFile.seekp ( getLocation() * sizeof(int) ) ;

    inFile.write (reinterpret_cast < const char* > (&value), sizeof(int);

    }

    vorrei capire precisamente il significato di "reinterpret_cast < const char* > (&value)", tutto il resto mi è chiaro.

    Inoltre mi chiedevo perchè quando invece si va a leggere dal file binario, dopo aver specificato la posizione con seekg, il primo parametro di inFile.read è

    reinterpret_cast < char* > (&value)

    senza const davanti a char.



    ringrazio anticipatamente chiunque voglia aiutarmi

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Semplicemente si indica alle funzioni che l'argomento di tipo "puntatore a int" (ovvero &value) deve essere "reinterpretato", per quella chiamata, come "puntatore a char" (come si aspetta la funzione).

    Il const non appare nel caso della lettura perché in questo modo si possono modificare i dati puntati dal puntatore in quanto viene assegnato loro il valore letto dal file. Al contrario, per la scrittura su file, i dati sono solamente letti dalla memoria e non modificati.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    26
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Semplicemente si indica alle funzioni che l'argomento di tipo "puntatore a int" (ovvero &value) deve essere "reinterpretato", per quella chiamata, come "puntatore a char" (come si aspetta la funzione).

    Il const non appare nel caso della lettura perché in questo modo si possono modificare i dati puntati dal puntatore in quanto viene assegnato loro il valore letto dal file. Al contrario, per la scrittura su file, i dati sono solamente letti dalla memoria e non modificati.
    innanzitutto grazie per la risposta.

    ma perchè c'è la necessità di reinterpretare come puntatore ad un carattere l'indirizzo che contiene un intero?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perché l'argomento formale della funzione è un puntatore a char e tu stai passando una cosa diversa ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.