Ho riscritto la classe, così sembra andare. L'unico problema (spero l'unico) è il distruttore. Non so come comportarmi.
Se do
codice:
delete [] nomestringa
Il compilatore non riconosce nomestringa come un puntatore, come risolvo?
codice:
#include <iostream>
#include "Persona.h"
using namespace std;
Persona::Persona()
{
Nome="";
Cognome="";
Eta=0;
}
Persona::Persona(const Persona & P)
{
string Nome(P.getN());
string Cognome(P.getC());
int Eta=P.getE();
}
Persona::Persona(const string N, const string C, const int E)
{
Nome=N;
Cognome=C;
Eta=E;
}
Persona::~Persona()
{
}
const Persona& Persona::operator = (const Persona& P)
{
if(this!=&P)
{
Nome = P.getN();
Cognome = P.getC();
Eta=P.getE();
return *this;
}
}
const string Persona::getN() const
{
return Nome;
}
const string Persona::getC() const
{
return Cognome;
}
const int Persona::getE() const
{
return Eta;
}
ostream& operator << (ostream& out, const Persona& P)
{
out << P.Nome << " " << P.Cognome << " " << P.Eta << " anni" << endl;
return out;
}
istream& operator >> (istream& in, Persona& P)
{
cout << "Inserire Nome: "; getline(in,P.Nome);
cout << "Inserire Cognome: "; getline(in,P.Cognome);
cout << "Inserire età: "; in >> P.Eta;
return in;
}
EDIT:
Come non detto, ho trovato nomestringa.clear() che dovrebbe fare al caso mio.
Ad ogni modo ditemi se ora la classe è più decente