PDA

Visualizza la versione completa : [C++] errore compilazione Code_Blocks, windows8


pongo
10-01-2015, 17:27
ho l'header file:



#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:




#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?


||=== 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|erro r: 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|erro r: 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|erro r: 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|erro r: within this context|
C:\Users\Yammo.it\Desktop\tesina\Visita.cpp|9|erro r: 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?

oregon
10-01-2015, 20:37
Mi sembra che manchi un

#include <string>

Rising1
10-01-2015, 21:22
è possibile che manchi un


public:

prima di


friend ostream&operator<<(ostream& os,Visita& v);
friendbooloperator==(constVisita& v1,constVisita& v2);

minomic
10-01-2015, 23:28
Anche secondo me manca public. Dopotutto la visibilità predefinita in C++ è private, quindi...

pongo
11-01-2015, 12:44
Sia inserendo la libreria string che inserendo public continua a dare gli stessi errori...

minomic
11-01-2015, 13:10
L'unica cosa che vedo è che manca const davanti a Visita in


friend ostream& operator<<(ostream& os, Visita& v);


ma non credo che sia quello il problema. Riesci a postarci un codice che possiamo provare sui nostri pc?

oregon
11-01-2015, 13:11
Sia inserendo la libreria string che inserendo public continua a dare gli stessi errori...

Per accelerare la risposta, puoi fare uno zip del progetto con tutti i files in modo da poterlo scaricare e compilare velocemente?

pongo
11-01-2015, 13:51
vero, mettendo const si tolgono vari errori però la compilazione non va ancora a buon termine, vi allego il file zip

minomic
11-01-2015, 13:57
Non vorrei dire stupidaggini ma a me ha compilato subito. Eseguendo il programma, vedo Mario Rossi - Cardiologia, ecc.

Però nello zip manca la classe Visita...

pongo
11-01-2015, 14:01
Ho provato a scaricare lo zip: c'è sia l'header che l'implementazione della classe Visita..

Loading