Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [ c++ ] overloading

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141

    [ c++ ] overloading

    L'OVERLOADING MI DA PROBLEMI
    non riesco a trovare il problema .... conpilando mi da pagine e pagine di errore !!!!
    codice:
    // telefonata.h
    #ifndef TELEFONATA_H
    #define TELEFONATA_H
    #include <iostream>
    #include "tempo.h"
    using namespace std;
    
    class telefonata {
    	public:
    		telefonata(tempo,tempo,int);
    		telefonata();
    		tempo Inizio() const;
    		tempo Fine() const;
    		int Numero() const;
    
    	private:
    		tempo inizio, fine;
    		int numero;
    };
    
    ostream& operator<<(ostream&, telefonata&);
    
    #endif
    
    // telefonata.cpp
    
    #include "telefonata.h"
    
    telefonata::telefonata(tempo i,tempo f,int n) {
    	inizio=i; fine=f; numero=n; };
    
    telefonata::telefonata() { numero=0; }
    
    tempo telefonata::Inizio() const {return inizio;}
    tempo telefonata::Fine() const {return fine;}
    int telefonata::Numero() const {return numero;}
    
    ostream& operator<<(ostream& o,telefonata& tel) {
    	return o<<"Inizio :"<<tel.Inizio()<<"Fine :"<<tel.Fine()<<"Numero :"<<tel.Numero();
    }

  2. #2
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    Che errore ti da?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    telefonata.cpp In function 'std:stream& operator<<(stdstream&, telefonata)':
    telefonata.cpp:20: no match for 'std::basic_ostream<char,std::char_traits<char> >& << tempo' operator .................................................. ........................... e molto molto altro ancora ma sempre sull' OSTREAM

  4. #4
    non puoi modificare una ostream cosi.

    devi dichiararla friend o almeno io ho sempre fatto così. Ho dichiarato la funzione come friend all'interno della classe prima del public:

    friend ostream &operator<<(ostream &, telefonata&);

    fuori dalla classe, nello sviluppo della funzione poi andà così:

    ostream &operator<<(ostream &, telefonata&)
    {
    //quello ke ci devi mettere
    }
    #include <cervello.h>

  5. #5
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    In questo caso può benissimo anche non essere friend perchè non accede ai membri privati della classe.
    Il problema nasce quando scrivi:
    codice:
    return o << "Inizio :" << tel.Inizio() ; //...
    Probabilmente in tempo.h non hai definito un inseritore (l'overloading di <<) e siccome Inizio() restituisce un oggetto tempo, lui non sa come visualizzarlo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    NON FUNZIONA ANCORA
    ho fatto l'overloading anche su tempo in questo modo ...

    sul file tempo.cpp

    // Stampa su video
    ostream& operator<<(ostream &os , tempo &t) {
    return os<<t.Ore()<<":"<<t.Minuti()<<":"<<t.Secondi();

    }

    sul file tempo.h

    ostream& operator<<(ostream& , tempo&);

  7. #7
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    Si ma se non ci dici gli errori... noi non abbiamo il progetto, non possiamo compilarlo!

    Cosa restituiscono Ore(), Minuti() e Secondi() ?
    Sono privati?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    l'errore l'avevo gia scritto :
    telefonata.cpp In function 'std:stream& operator<<(stdstream&, telefonata)':
    telefonata.cpp:20: no match for 'std::basic_ostream<char,std::char_traits<char> >& << tempo' operator .............................. e molto molto altro ancora ma sempre sull' OSTREAM
    i sorgenti sono a questa pagina :

    http://pricchio.altervista.org

    RINGRAZIO tutti quelli che mi possono aiutare.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    GRAZIE !!!!!!!!! ho risolto il problema .....

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.