Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di pongo
    Registrato dal
    Dec 2013
    Messaggi
    24

    [C++] errore compilazione Code_Blocks, windows8

    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?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembra che manchi un

    #include <string>
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    è possibile che manchi un

    codice:
    public:
    prima di
    codice:
    friend ostream&operator<<(ostream& os,Visita& v);
        friendbooloperator==(constVisita& v1,constVisita& v2);

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Anche secondo me manca public. Dopotutto la visibilità predefinita in C++ è private, quindi...

  5. #5
    Utente di HTML.it L'avatar di pongo
    Registrato dal
    Dec 2013
    Messaggi
    24
    Sia inserendo la libreria string che inserendo public continua a dare gli stessi errori...

  6. #6
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    L'unica cosa che vedo è che manca const davanti a Visita in

    codice:
    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?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da pongo Visualizza il messaggio
    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?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di pongo
    Registrato dal
    Dec 2013
    Messaggi
    24
    vero, mettendo const si tolgono vari errori però la compilazione non va ancora a buon termine, vi allego il file zip
    File allegati File allegati

  9. #9
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    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...

  10. #10
    Utente di HTML.it L'avatar di pongo
    Registrato dal
    Dec 2013
    Messaggi
    24
    Ho provato a scaricare lo zip: c'è sia l'header che l'implementazione della classe Visita..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.