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?
-
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
-
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?
-
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??
-
Vermutlich wird angestellte leer sein.