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?