Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    [C++]Problema copia di una lista in un file

    Salve,
    stò creando un programmino per copiare i valori di una lista in un file di testo e viceversa, però purtroppo nella compilazione del sorgente, l'editor mi restituisce precisamene 5 errori, di questo tipo:

    codice:
    c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\bits\ios_base.h|790|error: 'std::ios_base::ios_base(const std::ios_base&)' is private|
    c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|47|error: within this context|
    c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|note: synthesized method 'std::basic_ios<char, std::char_traits<char> >::basic_ios(const std::basic_ios<char, std::char_traits<char> >&)' first required here |
    c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\streambuf|770|error: 'std::basic_streambuf<_CharT, _Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits = std::char_traits<char>]' is private|
    c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|78|error: within this context|
    c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\include\c++\iosfwd|87|note: synthesized method 'std::basic_filebuf<char, std::char_traits<char> >::basic_filebuf(const std::basic_filebuf<char, std::char_traits<char> >&)' first required here |
    C:\Users\Gaten\Desktop\listafile.cpp||In function 'int main()':|
    C:\Users\Gaten\Desktop\listafile.cpp|45|note: synthesized method 'std::basic_fstream<char, std::char_traits<char> >::basic_fstream(const std::basic_fstream<char, std::char_traits<char> >&)' first required here |
    C:\Users\Gaten\Desktop\listafile.cpp|45|error:   initializing argument 2 of 'void CopyListInFile(lista*, std::fstream)'|
    ||=== Build finished: 5 errors, 0 warnings ===|
    Ecco il sorgente:

    codice:
    #include<iostream>
    #include<fstream>
    
    
    using namespace std;
    
    
    /* creo la struttura della lista */
    struct nodo {
    	int value;
    	nodo *link;
    };
    
    typedef struct nodo lista;
    /* end */
    
    
    /* prototipi delle functions */
    bool list_is_empty(lista *head);
    lista Insert(lista *&head, int elemento);
    void CopyListInFile(lista *head, fstream FILE);
    //void CopyFromFileInList(lista *&head, fstream FILE);
    
    
    /* entry point */
    int main()
    {
    	char choise;
    	int elemento, scelta;
    	lista *head=NULL;
    	fstream FILE;
    	FILE.open ("test.txt");
    
    	/* riempio la lista con valori interi */
    	cout<<"Inserisci i valori nella lista:"<<endl;
    	do {
    		cout<<"Inserisci l'elemento:"<<endl;
    		cin>>elemento;
    		Insert(head, elemento);
    		cout<<"Vuoi continuare ad inserire elementi?"<<endl;
    		cin>>choise;
    	} while (choise == 's' || choise == 'S');
    	/* end Insert */
    
    	CopyListInFile(head, FILE);
    	/*switch (scelta){
    		case 1: // Copio la lista nel FILE
    		break;
    
    		case 2: // Copio i valori dal FILE in lista
    		break;
    	}*/
    }
    /* end main */
    
    
    /* function list_is_empty */
    bool list_is_empty(lista *head){
    	if (head == NULL)
    		return true;
    	else
    		return false;
    }
    /* end list_is_empty */
    
    
    /* function Insert */
    lista Insert(lista *&head, int elemento){
    
    	//alloco dinamicamente memoria per il nuovo nodo
    	lista *new_node=new lista;
    
    	new_node->value=elemento;
    	new_node->link=NULL;
    
    	//se la lista è vuota, inserisco il primo elemento
    	if (list_is_empty(head)){
    		head=new_node;
    	}else{
    
    	//altrimenti dichiaro un puntatore temp. per inizializ.la testa
    		lista *temp;
    		temp=head;
    
    		//scorro la lista fino ad arrivare a NULL
    		while (temp != NULL){
    			temp=temp->link;
    		}
    		//collego il nuovo nodo alla fine della lista
    		temp->link=new_node;
    	}
    }
    /* end Insert */
    
    
    /* function CopyListInFile */
    void CopyListInFile(lista *head, fstream FILE){
    
    	/* SCOPO:
    	 * Copiare il contenuto della lista all'interno del file */
    	cout<<endl<<"Scrittura in corso..."<<endl;
    	while(head != NULL){ // scorro la lista fino all'ultimo elemento
    		FILE<<head->value<<endl;
    	}
    
    	/* chiudo il file */
    	FILE.close();
    	cout<<endl<<"Scrittura avvenuta con successo!";
    }
    /* end CopyLitInFile */
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Da errore per il modo con il quale passi lo stream a CopyListInFile:

    codice:
    void CopyListInFile(lista *head, fstream FILE)
    std::fstream non ha un costruttore di copia, necessario se vuoi passarlo per valore, quindi devi passare lo stream per indirizzo o reference.
    lolide
    Java Programmer

    Informati

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.