Sto progettando una classe Persona.
Ho il seguente header:
Codice:
#ifndef PERSONA_H
#define PERSONA_H
#include <iostream>
using namespace std;
class Persona
{
friend istream& operator >> (istream& in, Persona& P);
friend ostream& operator << (ostream& out, const Persona& P);
public:
Persona();
Persona(const Persona &);
Persona(const string, const string, int);
const Persona& operator = (const Persona&);
const string getN() const { return Nome; };
const string getC() const { return Cognome; };;
const int getE() const { return Eta; };
~Persona();
private:
string Nome;
string Cognome;
int Eta;
};
#endif
E la seguente implementazione:
Codice:
#include <iostream>
#include "Persona.h"
using namespace std;
Persona::Persona() : Eta(0) {}
Persona::Persona(const Persona & P) : Nome(P.getN()), Cognome(P.getC()), Eta(P.getE()) {}
Persona::Persona(const string N, const string C, int E) : Nome(N), Cognome(C), Eta(E) {}
Persona::~Persona()
{
Nome.clear();
Cognome.clear();
}
const Persona& Persona::operator = (const Persona& P)
{
if(this!=&P)
{
Nome = P.getN();
Cognome = P.getC();
Eta=P.getE();
return *this;
}
}
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;
}
Mi č stato consigliato di non usare mai la direttiva
Codice:
using namespace std;
in un header file.
Come posso rimuovere la direttiva adattando il codice di conseguenza?