Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    [C++] Leggere da file un array di oggetti

    Come faccio a salvare e prelevare un array di oggetti? Ho un array di un'oggetto di 1000 elementi, vorrei salvare ogni elemento 1 ad 1 e vorrei, in un secondo momento, riprendere questi dati da file e riempire questo array, in modo tale da prendere anche il numero degli elementi...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Dipende molto dall'oggetto e da quali sono i suoi membri ...

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da oregon
    Dipende molto dall'oggetto e da quali sono i suoi membri ...
    bhe ma cm si fa?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ti ho detto "dipende dall'oggetto" ... non dirmi "come si fa" ma descrivimi il tuo oggetto ...

  5. #5
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da oregon
    Ti ho detto "dipende dall'oggetto" ... non dirmi "come si fa" ma descrivimi il tuo oggetto ...
    e tu nn mi dire di descrivere l'oggetto, perché mi fai capire che nn hai capito la mia domanda. Io con le struct, qualunque sia la struct, faccio sempre

    oggetto.write( (char*)&s,sizeof s);

    con gli oggetti nn mi cambia nulla. Mi trovo solo in difficoltà a usare gli array...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Un oggetto *non* e' come una struttura e quindi non puoi agire nello stesso modulo ...

    Se ti da' fastidio indicarmi il tipo di oggetto (e descrivere la classe associata), non lo fare ...

  7. #7
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da oregon
    Un oggetto *non* e' come una struttura e quindi non puoi agire nello stesso modulo ...

    Se ti da' fastidio indicarmi il tipo di oggetto (e descrivere la classe associata), non lo fare ...
    Da quel che io ne sappia, struct e union sn delle forme particolari di oggetti. Le struct si contraddistinguono dalle classi perché tutti gli attrbuti sn pubblici e nn ci sn membri..

    vorrei sapere, ci deve pur essere un caso generico per salvare dei dati contenuto in un array di oggetti.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Gli oggetti, in genere, hanno un metodo (Serialize) in cui il metodo stesso registra su disco il proprio stato interno o lo carica da disco.

    Questo perche' e' solo l'oggetto che puo' accedere ai valori dei propri membri interni e soprattutto perche' l'oggetto "si conosce".

    Ovvero, se l'oggetto ha tra i suoi membri, un puntatore ad una stringa, non serve salvare il puntatore (cosa che tu faresti salvando l'oggetto per la sua estensione con la sizeof) per due motivi

    1) il valore del puntatore salvato non serve a nulla quando viene recuperato dal disco perche' l'allocazione della memoria in momenti diversi, e' sicuramente non coerente

    2) perche' non salvi i dati puntati dal puntatore (cioe' la stringa).

    La cosa, come potrai intuire facilmente, si complica maledettamente se l'oggetto disponde di puntatori ad altri oggetti che, a loro volta dispongono di membri come puntatori a stringhe.

    Adesso potrai capire *perche'* ti avevo chiesto "notizie" dell'oggetto che stavi trattando ...

    In generale, dunque, devi implementare un metodo Serialize che provveda a trattare i valori dei membri verso e dal disco; con tutte le operazioni che ne conseguono.

    Fatto per un oggetto, per l'array dovrai chiamare in un ciclo il metodo Serialize per ogni elemento dell'array stesso.

    Per inciso, molto di quanto detto, vale anche per le strutture e quindi il metodo che utilizzi tu e' *sbagliatissimo* anche per le strutture. Ma le strutture hanno un problema in piu' che le *differenzia* dall'oggetto di una classe ... non possono disporre di un metodo Serialize e quindi devi pensarci tu al trattamento corretto di tutti i suoi membri.

    Buon lavoro.

  9. #9
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Direi piuttosto efficace come risposta.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.