[c++] problema stringhe in programma classi

uaoke_88

Utente Attivo
3
0
salve a tutti mi sono appena registrato al forum e voglio subito sottoporvi il problema che mi ha fatto perdere mezza mattinata...
O creato questo semplice programma che implementa la classe libro, ma durante l'esecuzione dopo aver acquisito i primi due campi stringa si interrompe.
penso sia un problema relativo alle stringhe stesse anche perchè hop provato a farlo partire inserendo solo le variabili int e float e non dava alcun problema...vi posto di seguito i tre file su cui si sviluppa...

//libro.h
#ifndef _Libro_
#define _Libro_
#include <cstdlib>
#include <iostream>
#include <string>

class libro
{
private:
char * titolo;
int numpagine;
float prezzo;
char * genere;
char * autori;

public:
libro();
int get_numpagine() {return numpagine;}
float get_prezzo() {return prezzo;}
char* get_titolo(){return titolo;}
char* get_genere() {return genere;}
char* get_autori() {return autori;}
void set_titolo(char* nome) {titolo=new char[strlen(nome)+1];
strcpy(titolo,nome);}
void set_autori(char* nome) {genere=new char[strlen(nome)+1];
strcpy(autori,nome);}
void set_genere(char* nome) {autori=new char[strlen(nome)+1];
strcpy(genere,nome);}
void set_numpagine(int num) {numpagine=num;}
void set_prezzo(float valore) {prezzo=valore;}
void stampa_scheda(libro l);
libro scrivi_scheda();
};
#endif
----------------------------------------------------------------------------------------------------------------------------
//libro.cpp
#include "libro.h"
using namespace std;

libro::libro()
{
numpagine=0;
prezzo=0;
}

libro libro:: scrivi_scheda()
{
libro l;
float valore;
int num;
char* nome;
cout<<"Inserimento dati libro \n";
cout<<"Inserisci titolo: ";

cin.getline(nome,50);

l.set_titolo(nome);
cout<<"\nInserisci autore: ";

cin.getline(nome,50);

l.set_autori(nome);
cout<<"\nInserisci il genere: ";

cin.getline(nome,50);

l.set_genere(nome);
cout<<"\nInserisci il numero di pagine: ";
cin>>num;
l.set_numpagine(num);
cout<<"\nInserisci il prezzo: ";
cin>>valore;
l.set_prezzo(valore);
return l;

}

void libro:: stampa_scheda(libro l)
{
cout<<"\n Titolo: "<<l.get_titolo();
cout<<"\n Autore: "<<l.get_autori();
cout<<"\n Genere: "<<l.get_genere();
cout<<"\n Numero pagine: "<<l.get_numpagine();
cout<<"\n Prezzo: "<<l.get_prezzo()<<"\n ";
}
----------------------------------------------------------------------------------------------------------------------------
//main.cpp
#include "libro.h"
using namespace std;

int main(int argc, char *argv[])
{
libro opera;
float np; //nuovo prezzo

opera=opera.scrivi_scheda();

system("PAUSE");

opera.stampa_scheda(opera);

cout<<"Modifica prezzo \n";
cout<<"Vecchio prezzo: "<<opera.get_prezzo()<<" \n";
cout<<"Nuovo prezzo: ";
cin>>np;
opera.set_prezzo(np);

system("PAUSE");
return EXIT_SUCCESS;
}

ringrazio anticipatamente tutti coloro che si prodigheranno nel darmi una mano...
 

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 28 21.5%
  • Gearbox

    Voti: 2 1.5%
  • Xbox & Bethesda

    Voti: 84 64.6%
  • Square Enix

    Voti: 10 7.7%
  • Capcom

    Voti: 6 4.6%
  • Nintendo

    Voti: 18 13.8%
  • Altro (Specificare)

    Voti: 11 8.5%

Discussioni Simili