Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    28

    Ridefinizione operatori<<

    codice:
    #ifndef PERSONA_H
    #define PERSONA_H
    #include<string>
    #include<iostream>
    using namespace std;
    
    class Persona
    {
        private:
        string nome;
        string cognome;
        bool furbo;
    
        public:
        Persona() : nome(" "),cognome(" "),furbo(false){}
        Persona(string n,string c,bool f);
        bool IsFurbo();
        string getNome();
        string getCognome();
        void setNome(string n);
        void setCognome(string c);
        void setFurbo(bool f);
        bool operator==(const Persona& p);
        friend ostream& operator<<(const ostream& o,const Persona& p)
        {
            return o<<p.getNome()<<" "<<p.getCognome()<<" "<<p.IsFurbo()<<endl;
        }
    
    };
    
    #endif // PERSONA_H
    funziona tutto tranne operatore di ridefinzione<< mi sapreste dire il perchè??

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    28
    codice:
    friend ostream& operator<<(const ostream& o,const Persona& p) 
    { 
          o<<p.nome<<" "<<p.cognome<<" "<<p.furbo<<endl; 
          return o;
     }
    ho fatto cosi perchè è giusto cosi..ma non va lo stesso dove sbaglio?

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    codice:
        friend ostream& operator<<(ostream& o,const Persona& p)
        {
            return o<<p.nome<<" "<<p.cognome<<" "<<p.furbo<<endl; 
        }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Nel tuo operatore vai a modificare lo stream in questione, e non puoi fare ciò su un riferimento const; come spiegato da oregon, devi fargli ricevere un riferimento "normale" (non const) a ostream.

    Per inciso, come già detto in passato il linguaggio di riferimento della discussione va specificato nel titolo; per questa volta aggiusto io, in futuro ricordati di inserirlo fin da subito. Inoltre, è bene specificare esattamente in che forma si manifesta il problema, un generico "non funziona" spesso non è di grande aiuto.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.