Ausgabeoperator für STL vector



  • Hallo !

    Mein Vector soll ausgeben werden und zwar mit Hilfe eines Ausgabeoperators.Meine Syntax funktioniert nicht...fehlt was?Ein Iterator vielleicht?
    Ich komm einfach nicht weiter und würde mich über Hilfe freuen 🙂

    Caro

    #include<iostream>
    #include<vector> 
    #include<algorithm>
    using namespace std;
    
    class Abteilung;
    
    class Mitarbeiter{
    	  private:
    	  		  string name;
    	  		  float gehalt;
    
    	  public:
    	  		 Mitarbeiter(string n,float g):name(n),gehalt(g){}	
    			 friend  ostream& operator<<(ostream&, const Abteilung&);	  
    	  };
    
    class Abteilung{
    	  private:
    	  		  vector<Mitarbeiter> angestellte;
    	  		  string bezeichnung;
    	  public:
    	  		 Abteilung(string b):bezeichnung(b){}
    			  friend  ostream& operator<<(ostream&, const Abteilung&);
    
    	  };
    
    ostream& operator<<(ostream& os, const Abteilung& z)
    {  
       for(int i=0;i<angestellte.size();++i)
       {
       os << angestellte.name;		   
       }
       os << endl << z.bezeichnung <<  endl; 
       return os;
    }
    


  • Was funktioniert nicht?


  • Mod

    Du hast das z vor angestellte vergessen. Denk dran, dass du es nicht mit einer Memberfunktion zu tun hast. Außerdem musst du natürlich beim Zugriff noch angeben, dass du das i'te Element willst, z.B. mit [i] nach angestellte.

    Das sind schonmal 2 Sachen die mir sofort aufgefallen sind.



  • ostream& operator<<(ostream& os, const Abteilung& z)
    {  
       for(int i=0;i<angestellte.size();++i)
       {
       os << z.angestellte[i].name << z.angestellte[i].gehalt << endl;		   
       }
       os << endl << z.bezeichnung <<  endl; //erlaubt, da friend-Funktion
       return os;
    }
    

    Hab gerade Eure Anregungen eingetragen,mein Compiler sagt immer noch "angestellte was not declared in this scope"...hmmm


  • Mod

    Dann setz' unsere Anregungen mal in der Zeile um, wo der Fehler auftritt!



  • Das hab ich ja gemacht. Er bringt diese Fehlermeldung in der for Schleifen Deklaration und da sehe ich keinen Fehler



  • schau Dir mal den Kopf der for-Schleife genau an... in deinem letzten Codeschnippsel ist da ein Fehler...



  • Meinst Du das mit dem ++i?


  • Mod

    fischldi schrieb:

    Meinst Du das mit dem ++i?

    Kalt. Nächster Versuch. Schau nochmal genau hin. Vergleich mal mit der nächsten Zeile. Lies meinen ersten Beitrag noch einmal.



  • ostream& operator<<(ostream& os, const Abteilung& z)
    {  
       for(int i=0;i<z.angestellte.size();i++)
       {
       os << z.angestellte[i].name << z.angestellte[i].gehalt << endl;		   
       }
       os << endl << z.bezeichnung <<  endl; //erlaubt, da friend-Funktion
       return os;
    }
    

    Juhu...kein Fehler mehr!Dankeschön!



  • Aber er gibt jetzt nur "Verrwaltung" aus und nicht den Namen des MA und das Gehalt...woran liegt denn das??


  • Mod

    Vermutlich wird angestellte leer sein.


Anmelden zum Antworten