Semplice programma c++ con una classe utilizzata in un altra classe

di il
4 risposte

Semplice programma c++ con una classe utilizzata in un altra classe

Salve a tutti, volevo chiedervi cosa c' è che non va nel seguente codice in c++;
il programma è molto semplice, creare una classe "biblioteca", formata da un vettore di tipo "libro"(altra classe contenente le informazioni del libro, titolo, autore....)
mi da errore(exit 1, o qualcosa di simile), solo quando nel main inserisco una variabile di tipo "biblioteca"
dal main dovrei poter :
inserire nuovo libro
visualizzare libri di un autore
cercare un libro per autore e casa auditrice
visualizzare i libri di una casa editrice
visualizzare i libri di una fascia di prezzo
/*creare una classe bibblioteca UTILIZZANDO la classe libro
funzioni finali del programma:
inserire nuovo libro
visualizzare libri di un autore
cercare un libro per autore e casa auditrice
visualizzare i libri di una casa editrice
visualizzare i libri di una fascia di prezzo
*/


#include <iostream>
using namespace std;

const int dim=2;//numero libri

class libro{
	
	string autore;
	string titolo;
	float prezzo;
	string casa;//casa editrice
	
	public:
		
		libro();
		libro(string a, string t, string c, float p);
		
		void setautore(string a){autore=a;}
		void settitolo(string t){titolo=t;}
		void setcasa(string c){casa=c;}
		void setprezzo(float p){prezzo=p;}
		
		string getautore(){return autore;}
		string gettitolo(){return titolo;}
		string getcasa(){return casa;}
		float getprezzo(){return prezzo;};
		
		void stampa();
		
};
	
//--------------------------------------------------------	
		
libro::libro(){
	
	
	autore="non lo so";
	titolo="non lo so";
	casa="non lo so";
	prezzo=0;
	
}

//---------------------------------------------------------

libro::libro(string a, string t, string c, float p){
	
	autore=a;
	titolo=t;
	casa=c;
	
	while(prezzo<0){
	cout<<endl<<"valore non valido, reinserisci --> ";cin>>c;
	prezzo=p;
					}
}

//--------------------------------------------------------------

void libro::stampa(){
cout<<endl<<"titolo --> "<<titolo;
cout<<endl<<"autore --> "<<autore;
cout<<endl<<"casa editrice --> "<<casa;
cout<<endl<<"prezzo --> "<<prezzo;
}


//--------------------------------------------------------------

class biblioteca{
	
	libro biblio[dim];
	
	public:
		
		biblioteca();
		biblioteca(libro a[]);
		
		void setbiblio(libro a[]){for(int i=0; i<dim; i++) biblio[i]=a[i];}
		libro getbiblio(int b){return biblio[b];}
		
		void ricerca(libro b[]);//ricerca per auore o casa auditrice
	
	
	
};



void biblioteca::ricerca(libro b[]){
string a;
int scelta, c=0;
cout<<endl<<" 1- cerca per autore"
<<endl<<" 2- cerca per casa editrice"
<<endl<<" scelta --->	";cin>>scelta;

switch(scelta){
	
case 1:
	c=0;
	cout<<endl<<"inserisci il nome dell' autore --> ";cin>>a;
	for(int i=0; i<dim; i++)
	{
	if(a==biblio[i].getautore())
	{biblio[i].stampa();c++;}
	} 
	while(c==0){cout<<endl<<"nessun risultato "<<endl; }
	break;
case 2:
	c=0;
	cout<<endl<<"inserisci la casa editrice --> ";cin>>a;
	for(int i=0; i<dim; i++)
	{
	if(a==biblio[i].getcasa())
	{biblio[i].stampa();c++;}
	} break;
	while(c==0){cout<<endl<<"nessun risultato "<<endl;}
	break;
	
default: cout<<endl<<"inserimento errato"<<endl;break;

	
}
}


	
		
		
		
		
		
		
		
libro ins();	
		
int main(){
	

biblioteca elementi;//mi da errore





system("pause");
return 0;
}


libro ins(){//inserimento dati 		anche qui non so come fare(è giusto ?, come va utilizzato nel main?)
	string t;
	string a;
	string c;
	float p;
	
	cout<<endl<<"inserisci il titolo --> ";cin>>t;
	cout<<endl<<"inserisci l' autore --> ";cin>>a;
	cout<<endl<<"inserisci la casa editrice --> ";cin>>c;
	cout<<endl<<"inserisci il prezzo --> ";cin>>p;
	
	libro dati(a, t, c, p);
	
	
return dati;
}

grazie

4 Risposte

  • Re: Semplice programma c++ con una classe utilizzata in un altra classe

    Posta l'errore completo che ti dà.
  • Re: Semplice programma c++ con una classe utilizzata in un altra classe

    Devi sempre riportare il messaggio d'errore completo.

    Comunque, manca il costruttore biblioteca()
  • Re: Semplice programma c++ con una classe utilizzata in un altra classe

    Come avrete già letto dall' altro post(grazie per la segnalazione ;=)), mi da "([Error] ld returned 1 exit status)", solo quando nel main inserisco una variabile di tipo "biblioteca"

    qui rimetto il programma:
    /*creare una classe bibblioteca UTILIZZANDO la classe libro
    funzioni finali del programma:
    inserire nuovo libro
    visualizzare libri di un autore
    cercare un libro per autore e casa auditrice
    visualizzare i libri di una casa editrice
    visualizzare i libri di una fascia di prezzo
    */
    
    
    #include <iostream>
    using namespace std;
    
    const int dim=2;
    
    class libro{
       
       string autore;
       string titolo;
       float prezzo;
       string casa;
       
       public:
          
          libro();
          libro(string a, string t, string c, float p);
          
          void setautore(string a){autore=a;}
          void settitolo(string t){titolo=t;}
          void setcasa(string c){casa=c;}
          void setprezzo(float p){prezzo=p;}
          
          string getautore(){return autore;}
          string gettitolo(){return titolo;}
          string getcasa(){return casa;}
          float getprezzo(){return prezzo;};
          
          void stampa();
          
    };
       
    //--------------------------------------------------------   
          
    libro::libro(){
       
       
       autore="non lo so";
       titolo="non lo so";
       casa="non lo so";
       prezzo=0;
       
    }
    
    //---------------------------------------------------------
    
    libro::libro(string a, string t, string c, float p){
       
       autore=a;
       titolo=t;
       casa=c;
       
       while(prezzo<0){
       cout<<endl<<"valore non valido, reinserisci --> ";cin>>c;
       prezzo=p;
                   }
    }
    
    //--------------------------------------------------------------
    
    void libro::stampa(){
    cout<<endl<<"titolo --> "<<titolo;
    cout<<endl<<"autore --> "<<autore;
    cout<<endl<<"casa editrice --> "<<casa;
    cout<<endl<<"prezzo --> "<<prezzo;
    }
    
    
    //--------------------------------------------------------------
    
    class biblioteca{
       
       libro biblio[dim];
       
       public:
          
          biblioteca();
          biblioteca(libro a[]);
          
          void setbiblio(libro a[]){for(int i=0; i<dim; i++) biblio[i]=a[i];}
          libro getbiblio(int b){return biblio[b];}
          
          void ricerca(libro b[]);//ricerca per auore o casa auditrice
       
       
       
    };
    
    
    
    void biblioteca::ricerca(libro b[]){
    string a;
    int scelta, c=0;
    cout<<endl<<" 1- cerca per autore"
    <<endl<<" 2- cerca per casa editrice"
    <<endl<<" scelta --->   ";cin>>scelta;
    
    switch(scelta){
       
    case 1:
       c=0;
       cout<<endl<<"inserisci il nome dell' autore --> ";cin>>a;
       for(int i=0; i<dim; i++)
       {
       if(a==biblio[i].getautore())
       {biblio[i].stampa();c++;}
       } 
       while(c==0){cout<<endl<<"nessun risultato "<<endl; }
       break;
    case 2:
       c=0;
       cout<<endl<<"inserisci la casa editrice --> ";cin>>a;
       for(int i=0; i<dim; i++)
       {
       if(a==biblio[i].getcasa())
       {biblio[i].stampa();c++;}
       } break;
       while(c==0){cout<<endl<<"nessun risultato "<<endl;}
       break;
       
    default: cout<<endl<<"inserimento errato"<<endl;break;
    
       
    }
    }
    
    
       
          
          
          
          
          
          
          
    libro ins();   
          
    int main(){
       
    
    
    biblioteca ciao_prova;//quanti inserisco questa variabile di questo tipo mi da errore
    
    
    
    
    system("pause");
    return 0;
    }
    
    
    libro ins(){//inserimento
       string t;
       string a;
       string c;
       float p;
       
       cout<<endl<<"inserisci il titolo --> ";cin>>t;
       cout<<endl<<"inserisci l' autore --> ";cin>>a;
       cout<<endl<<"inserisci la casa editrice --> ";cin>>c;
       cout<<endl<<"inserisci il prezzo --> ";cin>>p;
       
       libro dati(a, t, c, p);
       
       
    return dati;
    }
    
    
  • Re: Semplice programma c++ con una classe utilizzata in un altra classe

    Perché riproponi domanda e codice???

    Hai letto quello che ti ho risposto?

    La causa dell'errore è "manca il costruttore biblioteca()"
Devi accedere o registrarti per scrivere nel forum
4 risposte