ho l'header file:
codice:
#ifndef VISITA_H_INCLUDED
#define VISITA_H_INCLUDED
#include <iostream>
#include "Medico.h"
#include "Assistito.h"
#include "Data.h"
using namespace std;
class Visita
{
friend ostream& operator<<(ostream& os, Visita& v);
friend bool operator==(const Visita& v1, const Visita& v2);
private:
string tipo, farmaco;
int durata;
Data data;
Medico* p_med;
Assistito* p_ass;
Data data;
Visita(string t, string f, int du, Data da, Medico* m, Assistito* a);
string Tipo() const { return tipo;}
void CambiaTipo(string t){tipo=t;}
string Farmaco() const { return farmaco; }
int Durata() const { return durata; }
Data DataVisita() const { return data; }
Medico* Visitante() const { return p_med; }
Assistito* Visitato() const { return p_ass; }
};
#endif // VISITA_H_INCLUDED
ed il file di implementazione:
codice:
#include "Visita.h"
Visita::Visita(string t, string f, int du, Data da, Medico* m, Assistito* a)
: tipo(m->Specializzazione()), farmaco(f), durata(du), data(da), p_med(m), p_ass(a){}
ostream& operator<<(ostream& os, const Visita& v)
{
os<<v.p_med->Nome()<<" visita " <<v.p_ass->Nome()<<" " <<v.durata <<" " <<v.data <<" " <<v.tipo<<" ("v.farmaco<<")";
return os;
}
bool operator==(const Visita& v1, const Visita& v2)
{
return v1.Visitante()->Nome()==v2.Visitante()->Nome()
&& v1.Visitato()->NumTessera() == v2.Visitato()->NumTessera()
&& v1.Tipo() == v2.Tipo()
&& v1.DataVisita() == v2.DataVisita();
}
Qualcuno sa dirmi perché ottengo questi errori in fase di compilazione?
codice:
||=== Build: Debug in tesina (compiler: GNU GCC Compiler) ===|
C:\Users\Yammo.it\Desktop\tesina\Visita.h||In function 'std::ostream& operator<<(std::ostream&, const Visita&)':|
C:\Users\Yammo.it\Desktop\tesina\Visita.h|20|error: 'Medico* Visita::p_med' is private|
C:\Users\Yammo.it\Desktop\tesina\Visita.cpp|9|error: within this context|
C:\Users\Yammo.it\Desktop\tesina\Visita.h|21|error: 'Assistito* Visita::p_ass' is private|
C:\Users\Yammo.it\Desktop\tesina\Visita.cpp|9|error: within this context|
C:\Users\Yammo.it\Desktop\tesina\Visita.h|18|error: 'int Visita::durata' is private|
C:\Users\Yammo.it\Desktop\tesina\Visita.cpp|9|error: within this context|
C:\Users\Yammo.it\Desktop\tesina\Visita.h|19|error: 'Data Visita::data' is private|
C:\Users\Yammo.it\Desktop\tesina\Visita.cpp|9|error: within this context|
C:\Users\Yammo.it\Desktop\tesina\Visita.cpp|9|error: no match for 'operator<<' in 'std::operator<< <std::char_traits<char> >((* &(& std::operator<<
Quando vado a fare l'overloading degli operatori, essendo funzione friend non dovrei poter accedere senza problemi ai membri privati della classe?