vuoi
o PayPal
tutte le volte che vuoi
Testo della prova
Si realizzi in linguaggio C++ un programma per la memorizzazione di una lista di
libri su file binario. Allo scopo si
definisca una classe Libro avente tre variabili membro: autori, titolo (di tipo stringa
di caratteri allocata
dinamicamente) e anno (di tipo intero). Siano definiti per tale classe i metodi per la
lettura del valore di ciascuna
variabile membro (funzioni get) e l'overloading dell'operatore << per la stampa a
video di tali valori. Si definiscano
come funzioni amiche della classe Libro i seguenti operatori:
ñ ifstream& operator>>(ifstream& file, Libro& libro) throw (Error);
legge dal file binario file i valori dei membri della classe Libro e li assegna
all'oggetto libro
ñ ofstream& operator<<(ofstream& file, Libro& libro) throw (Error);
scrive nel file binario file i valori dei membri dell'oggetto libro
Nel leggere/scrivere stringhe dal/nel file, si consideri che vanno memorizzati nel
file binario i soli caratteri da cui la
stringa Ë formata. I suddetti operatori devono lanciare eccezioni di tipo Error
qualora una operazione su file
fallisca. La classe Error contiene la variabile membro msg (di tipo string).
L'oggetto Error lanciato conterr‡ in msg una descrizione dell'operazione fallita.
Le operazioni di inserimento di nuovi libri avvengono caricando i libri presenti nel
file binario in una struttura dati
(lista collegata a puntatori) mantenuta in memoria.:
In particolare, uno dei costruttori presenti nella specifica della classe Lista
inizializza una lista dinamica a partire
dagli oggetti di tipo Libro presenti nel file specificato in ingresso al costruttore. Se
tale file non esiste la lista viene
inizializzata come lista vuota. Tale costruttore utilizza l'operatore >> definito prima
e la funzione inserisci, membro
della classe Lista. Si scelga quale tipo di operazione di inserimento realizza la
funzione inserisci (in testa, in coda,
secondo un criterio di ordinamento) e lo si implementi.
La funzione membro salva memorizza i libri contenuti nella lista nel file binario di
nome fname. Questa funzione
lancia un'eccezione di tipo Error nel caso si verifichino errori che descrive quale
operazione Ë fallita. La funzione
membro stampa visualizza a video tutti i libri contenuti nella lista.
Si utilizzi il seguente main di prova, al quale si chiede di aggiungere alla fine le
linee di codice necessarie alla
definizione di una variabile v di tipo vector (utilizzando la libreria STL) da
inizializzare con le liste l1 ed l2 (vedi