Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c++] lettura/scrittura sul file tramite classi

    salve ragazzi ho una classe di questo tipo
    Codice PHP:
    class squadre {
    //definisco gli attributi relativi alla classe
        
    string nome;
        
    int giocate;
        
    int vinte;
        
    int perse;
        
    int pari;
        
    int gf;
        
    int gs;
        
    int penalita;
    public:
        
    //definizione dei vari metodi della classe
        //Costruttore di default
        
    squadre() {
        
    nome "";
        
    giocate 0;
        
    vinte 0;
        
    perse 0;
        
    pari 0;
        
    gf 0;
        
    gs 0;
        
    penalita 0;
        }
        
    //Costruttore
        
    squadre (string nameint playedint wonint lostint drawnint scoredint concededint penality) {
        
    nome name;
        
    giocate played;
        
    vinte won;
        
    perse lost;
        
    pari drawn;
        
    gf scored;
        
    gs conceded;
        
    penalita penality;
        }
        
    //Distruttore
        
    ~squadre() {
        
    cout << "Libero la memoria occupata...";
        }
        
    //Prototipi dei vari metodi sulla classe (definizione trattata successivamente)
        
    void visualizza();
    }; 
    Voglio leggere dal file squadre.dat e stampare a video.
    Codice PHP:
    void squadre::visualizza(){
    //Puntatore al file
    FILE *filepunt;
    if((
    filepunt fopen("squadre.dat","r"))==NULL)
        { 
        
    //Il file non esiste non posso visualizzare nessun elenco di squadre
        //Restituisco un messaggio di errore
        
    cout << "\n  Il file 'squadre.dat' e' inesistente.\nNon e' stata inserita nessuna squadra!";
    } else { 
        
    //Il file esiste quindi è stata inserita almeno una squadra.
        //Stampo i titoli delle colonne
        
    cout << "Squadra";
        
    cout << "\tGiocate";
        
    cout << "\tVinte";
        
    cout << "\tPerse";
        
    cout << "\tPari";
        
    cout << "\tGol fatti";
        
    cout << "\tGol subiti";
        
    cout << "\tPenalita'";
        
    cout << "\n" << endl;
        
    //Mostro i risultati ordinati per ordine crescente di inserimento
        
    fread(&squadresizeof(class squadre), 1filepunt);
        
    //Leggo il file fino alla fine col l'istruzione while
        
    while(!feof(filepunt)) { 
        
    cout << nome;
        
    cout << "\t" << giocate;
        
    cout << "\t" << vinte;
        
    cout << "\t" << perse;
        
    cout << "\t" << pari;
        
    cout << "\t" << gf;
        
    cout << "\t" << gs;
        
    cout << "\t" << penalita;
        
    cout << endl;
        }
    }

    Perche non mi funziona in questa maniera?
    L'input output con le classi è consentito solo con la gestione c++ like?
    Oppure sbaglio in qualche parte?
    Grazie

  2. #2

    Re: [c++] lettura/scrittura sul file tramite classi

    Originariamente inviato da theboss280489
    Perche non mi funziona in questa maniera?
    Con qualche indizio in più, aumenterebbe la probabilità che qualcuno possa aiutarti a risolverlo il tuo problema ;-)

  3. #3

    Re: Re: [c++] lettura/scrittura sul file tramite classi

    Originariamente inviato da MacApp
    Con qualche indizio in più, aumenterebbe la probabilità che qualcuno possa aiutarti a risolverlo il tuo problema ;-)
    In che senso? ho postato tutto il codice
    posso dire dove mi da errore: alla linea dove c'è la lettura (la riga che inizia con fread...)
    Che altro aggiungere?

  4. #4

    Re: Re: Re: [c++] lettura/scrittura sul file tramite classi

    Originariamente inviato da theboss280489
    In che senso? ho postato tutto il codice
    posso dire dove mi da errore: alla linea dove c'è la lettura (la riga che inizia con fread...)
    Che altro aggiungere?
    Porta la tua macchina da un meccanico e digli che non va, poi facci sapere cosa ti dice il meccanico.

    OK dici che alla linea che inizia con fread c'è un errore: che tipo d'errore?
    • Di compilazione (preprocessore, compliazione o linking)? (in tal caso posta anche l'errore che ti restituisce il compilatore)
    • Di esecuzione? Ti va in crash il computer, il programma? L'eventuale output del programma (sempre che sia stato possibile compilarlo) come è fatto? Il programma funge perfettamente ma ti manda la CPU al 100% senza mai uscire dal programma stesso?

    Tra l'altro vedo che usi un file di input, come è fatto quel file?

  5. #5
    1>------ Inizio compilazione: Progetto: prove, Configurazione: Debug Win32 ------
    1>Compilazione in corso...
    1>prove.cpp
    1>c:\users\boz\documents\visual studio 2008\projects\prove\prove\prove.cpp(51) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237): vedere la dichiarazione di 'fopen'
    1>c:\users\boz\documents\visual studio 2008\projects\prove\prove\prove.cpp(69) : error C2275: 'squadre': tipo non valido come espressione
    1>Il log di compilazione è stato salvato in 'file://c:\Users\Boz\Documents\Visual Studio 2008\Projects\prove\prove\Debug\BuildLog.htm'
    1>prove - 1 errore/i, 1 avviso/i
    Questo è il report di compilazione.
    Non l'ho scritto perchè molto probabilmente ho sbagliato concettualmente nel senso che non sono sicuro che con la gestione file c like possa utillizzare le classi.
    E molto probabilmente (anche se vorrei sbagliarmi per non stare a riscrivere tutto) l'errore è dovuto proprio a questo fatto qui.
    Quindi non facciamo analogie inutili con i meccanici

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da theboss280489
    Quindi non facciamo analogie inutili con i meccanici
    Perchè inutile ? Io l'ho trovata molto opportuna ...

    Quindi, se ho capito bene, l'errore che ti dà il compilatore è questo

    c:\users\boz\documents\visual studio 2008\projects\prove\prove\prove.cpp(69) : error C2275: 'squadre': tipo non valido come espressione

    ed è nella riga della fread (la numero 69) ?

    Controllando meglio, è ovvio, dato che gli dici di usare un puntatore al nome della classe

    &squadre

    e questo non ha senso ... devi far riferimento a this, ad esempio

    fread(this, sizeof(*this), 1, filepunt);

    anche se non ha molto senso salvare su disco i dati in questo modo, dato che esistono altri oggetti all'interno della classe, che non puoi essere sicuro che abbia senso rileggere quando ti servono (ad esempio, se contengono riferimenti ad aree di memoria allocate e relativi puntatori).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Perchè inutile ? Io l'ho trovata molto opportuna ...
    Vabè ok mi sbaglio io.
    Si esatto l'errore è quello hai centrato perfettamente

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.