Ciao a tutti.
Ho un problema abbastanza importante. Ho dovuto costruire un programma con due classi, una Libreria e una Libro, per un'ipotetica libreria. Va tutto bene tranne una cosa: la funzione vendi quando la applico mi stampa il numero di copie ridotto di un(come giusto che sia). Se però poi richiamo la funzione elenco, questa mi si ripresenta invariata.
Credo non mi modifichi la variabile "numero" permanentemente ma solo temporaneamente. Il problema è che non so come fare perchè lo faccia.
Vi mando il codice delle funzioni che c'entrano di più.
#include "libro.h"
Libro::Libro()
{
}
QString Libro::getter()
{
QString s;
s.append(this->titolo);
s.append("\t");
s.append(this->autore);
s.append("\t");
s.append(QString::number(this->numero));
return s;
}
void Libro::setter(QString tit, QString aut, int nc)
{
this->titolo=tit;
this->autore=aut;
this->numero=nc;
}
int Libro::getnumero()
{
return this->numero;
}
void Libro::menocopie(int count)
{
this->numero=count;
}
QString Libro::gettitolo()
{
return this->titolo;
}
Libro::~Libro()
{
}
void Libreria::vendi()
{
ui->textEdit->clear();
ui->textEdit->append("Libri venduti\n\nTitolo\tAutore\tQuantita'\n");
QVector<Libro>::Iterator i;
Libro l;
bool ok;
ok=NULL;
QString titolo;
titolo=QInputDialog::getText(this,tr("Ricerca Titolo"),tr("Inserisci il titolo del libro"),QLineEdit::Normal,"",&ok);
ok=NULL;
int count=0;
for (i=v.begin();i!=v.end();i++)
{
l=*i;
if (titolo==l.gettitolo())
{
int copie=l.getnumero();
if (copie>0)
{
copie--;
l.menocopie(copie);
count++;
ui->textEdit->append(l.getter());
}
}
}
if (count==0)
{
ui->textEdit->clear();
ui->textEdit->append("Non ci sono libri con questo titolo");
}
}
#ifndef LIBRO_H
#define LIBRO_H
#include<QString>
class Libro
{
private:
QString titolo;
QString autore;
int numero;
public:
Libro();
QString getter();
void setter(QString tit, QString aut, int nc);
void menocopie(int count);
QString gettitolo();
int getnumero();
~Libro();
};
#endif // LIBRO_H