ho l'header file:
ed il file di implementazione: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
Qualcuno sa dirmi perché ottengo questi errori in fase di compilazione?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(); }
Quando vado a fare l'overloading degli operatori, essendo funzione friend non dovrei poter accedere senza problemi ai membri privati della classe?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<<

Rispondi quotando
