Salve ragazzi.
Sto incontrando difficoltà nella lettura da file con accesso sequenziale utilizzando i metodi c++ like e non c like.
questa è la mia classe arbitro (vi ricordo che è derivata dalla classe individuo quindi riporto prima quest'ultima)
INDIVIDUO:
Codice PHP:
#include <string>
using namespace std;
class individuo {
public:
string nome;
string cognome;
int eta;
//Costruttore di default
individuo() {
nome = "";
cognome = "";
eta = 0;
}
//Costruttore
individuo (string name, string surname, int age) {
nome = name;
cognome = surname;
eta = age;
}
//Distruttore
~individuo() {
cout << "Libero la memoria occupata...";
}
};
ARBITRO
Codice PHP:
#include <iostream>
#include <string>
#include "individuo_class.h"
using namespace std;
//creo la classe arbitro derivata dalla classe individuo
class arbitro: public individuo {
public:
string origine;
//Costruttore di default
arbitro() {
nome = "";
cognome = "";
eta = 0;
origine = "";
}
//costruttore
arbitro(string name, string surname, int age, string born):individuo(name,surname,age) {
origine = born;
}
void visualizza();
};
ora il file cpp con i metodi sulla classe arbitro (in praticolare riportato il metodo visualizza)
Codice PHP:
#include <iostream>
#include <string>
#include <fstream>
#include "arbitro_class.h"
using namespace std;
void arbitro::visualizza(){
fstream fs;
//apertura del file
fs.open("arbitri.dat",ios::in|ios::binary);
if (!fs.fail()) {
//Il file non esiste non posso visualizzare nessun elenco di arbitri
//Restituisco un messaggio di errore
cout << "\n Il file 'arbitri.dat' e' inesistente.\nNon e' stato inserito nessun arbitro!";
} else {
//Il file esiste quindi è stato inserito almeno un arbitro.
//Stampo i titoli delle colonne
cout << "Nome";
cout << "\tCognome";
cout << "\tEta'";
cout << "\tOrigine";
cout << "\n" << endl;
//Mostro i risultati ordinati per ordine crescente di inserimento
fs.read((char*)this,sizeof(*this));
while(!fs.feof(fs)){
cout << nome;
cout << "\t" << cognome;
cout << "\t" << eta;
cout << "\t" << origine;
cout << endl;
fs.read((char*)this,sizeof(*this));
}
}
fs.close();
}
Ricevo un errore per quando riguarda la riga while(!fs.feof(fs)){
in particolare mi avverte dell'impossibilità di sfruttare feof.
Come mai?