[RISOLTO] problema list<int>

di il
8 risposte

[RISOLTO] problema list<int>

Ragazzi , ho un altro piccolo problema nel gestire una lista..


class Dipendente {
private:
      string       nome;
      string       cognome;
      string       matricola;      
      list<int>   redditi;
      
public:
      Dipendente();      
      Dipendente(const Dipendente &d);
      
      bool operator==(Dipendente &o);
      friend ostream& operator<<(ostream &os, Dipendente &d);
      friend istream& operator>>(istream &is, Dipendente &d);
        
      // Funzioni SET
      void setNome(string n);
      void setCognome(string c);
      void setMatricola(string m);
			
      // Funzioni GET
      string prendiNome();
      string getCognome();
      string getMatricola();
            
      // Altre Funzioni
      void addReddito(int r);  // aggiunge un nuovo reddito alla lista dei redditi
      void clear();            // azzera la lista dei redditi
      int  mediaReddito();   // calcola e restituisce la media dei redditi
//int compMedia(const vector<Dipendente> &v);
};



nello specifico ho implementato il costruttore di copia e tutto funge alla grande... ora sto implementando il costruttore di default, cosi :


Dipendente::Dipendente(){
    nome="";
    cognome="";
    matricola="";


// non so proprio come allocare un tipo di dato list<int> 

//: redditi=??
    
    
}


 
I miei problemi si presentano quando devo gestire una lista in una classe attraverso la STL, infatti anche nell' overloading degli operatori , ho lo stesso problema...

ostream &operator<<(ostream &out,Dipendente &d){
    
    
    
    out<<d.nome<<" "<<d.cognome<<" "<<d.matricola<<" "<<" "<<endl;
    return out;
    
    
}


tutto funge ma quando implemento list<int> redditi o la richiamo nell' overloading degli operatori, mi da molti errori..

Suggerimenti e consigli?
Come posso fare..?

8 Risposte

  • Re: [RISOLTO] problema list<int>

    Non so bene cosa intendi per "allocare" ma ti posto un semplicissimo esempio che mostra un possibile utilizzo di una lista (con inserimento fatto sempre in testa):
    
    #include <iostream>
    #include <list>
    
    int main(int argc, char const *argv[])
    {
    	std::list<int> my_list;
    
    	for(int i=0; i<10; ++i) {
    		my_list.push_front(i);
    	}
    
    	for(std::list<int>::iterator it = my_list.begin(); it != my_list.end(); ++it) {
    		std::cout << "Elemento: " << *it << std::endl;
    	}
    
    	return 0;
    }
    
  • Re: [RISOLTO] problema list<int>

    Queste cose le ho capite... sto sbattendo invece la testa su allocare dinamicamente in memoria un oggetto di tipo list<int> redditi contenuta nella mia classe.. nello specifico è importante ed essenziale allocarla dinamicamente nel costruttore di default?

    Come posso fare un overloading degli operatori con queste liste?
    
    ostream &operator<<(ostream &out,Dipendente &d){
        
        
       
        
        out<<d.nome<<" "<<d.cognome<<" "<<d.matricola<<" "<<" "<<endl;
        
        
        return out;
        
        
    }
    
    
  • Re: [RISOLTO] problema list<int>

    Jqr91 ha scritto:


    allocare dinamicamente in memoria un oggetto di tipo list<int> redditi
    Di nuovo... cosa devi allocare? Appena tu scrivi
    
    list<int> redditi;
    
    la lista è pronta. Non c'è niente altro che devi fare.
  • Re: [RISOLTO] problema list<int>

    Volevo sapere se nel costruttore di default, come dovevo implementarla.. e come gestire l overloading riportato sopra della mia classe..
  • Re: [RISOLTO] problema list<int>

    Nel costruttore di default non devi fare niente. Quando hai scritto list<int> redditi tra i membri della tua classe hai già finito.

    Se poi vuoi stampare tutti gli elementi della lista puoi sfruttare quel ciclo for con gli iteratori (che ti ho postato prima) e metterlo all'interno della funzione nella quale fai l'overload dell'operator<<. Semplicemente dovrai concatenare ad out tutti gli elementi della lista.
  • Re: [RISOLTO] problema list<int>

    Gia fatto ed è funzionante... pero nel mio caso , list<int> redditi gli ho in una classe e non so proprio come fare...

    la mia funzione che fa l overloading è... :
    
    ostream &operator<<(ostream &out,Dipendente &d){
        
        
        
        out<<d.nome<<" "<<d.cognome<<" "<<d.matricola<<" "<<" "<<endl;
        return out;
        
        
    }
    
    
    [\code]
    
    come vedi nell' argomento della funzione c è una classe Dipendente &d, che a sua volta la classe contiene la lista... scusami se ti faccio perdere tempo , ma non so come fare..
  • Re: [RISOLTO] problema list<int>

    Ma se tu fai
    
       for(std::list<int>::iterator it = d.redditi.begin(); it != d.redditi.end(); ++it) {
          out << *it << std::endl;
       }
    
    non funziona?
  • Re: [RISOLTO] problema list<int>

    Grazie,ora funge... quindi potevo fare anche cosi...non sapevo si potesse fare d.redditi.qualcos_altro, o meglio non c ho proprio pensato..grazie ancora!
Devi accedere o registrarti per scrivere nel forum
8 risposte