Probleme bei Vektor ausgeben
-
Guten Tag
Hab ein Problem und zwar möchte ich eine Vektor ausgeben, sprich den Inhalt der Objekte. Versuche es über Iteratoren jedoch kriege ich immer eine Fehlermeldung zum operator <<. Muss ich den zuerst überladen?
std::vector <Account> m_Transactions;
std::vector <Account>::iterator m_Iterator;std::ostream& operator<<(std::ostream& m_Transactions, Account& rhs);
for (m_Iterator = m_Transactions.begin(); m_Iterator != m_Transactions.end(); m_Iterator++)
cout << *m_Iterator << ", ";
-
std::vector <Account> m_Transactions; std::vector <Account>::iterator m_Iterator; std::ostream& operator<<(std::ostream& m_Transactions, Account& rhs); for (m_Iterator = m_Transactions.begin(); m_Iterator != m_Transactions.end(); m_Iterator++) cout << *m_Iterator << ", ";Die Benamsung lässt ahnen, dass Du etwas den Faden verloren hast.

Anyway. Du hast einen
vectormit Instanzen vonAccount, die Du ausgeben willst.
Also musst Du - wie Du auch schon richtig angefangen hast definieren, wie einAccount-Objekt in einen Ausgabestrom eingefügt wird:std::ostream& operator<<(std::ostream& out, const Account& rhs){ out << "Account:\n" << rhs.member1 << '\n' << rhs.member2; ... return out; }
-
Ja das ist gut möglich bin c++ am lernen momentan.
Ich krieg bei deiner Zeile
[code="cpp"]std::ostream& operator<<(std::ostream& out, const Account& rhs)einen Fehler das ein ; erwartet wird. Zudem hab ich eine frag rhs und ist ein objekt richtig? wiso muss ich um den operator zu überladen ein neues objekt erstellen?
-
LawC++ schrieb:
Ich krieg bei deiner Zeile
std::ostream& operator<<(std::ostream& out, const Account& rhs)einen Fehler das ein ; erwartet wird. Zudem hab ich eine frag rhs und ist ein objekt richtig? wiso muss ich um den operator zu überladen ein neues objekt erstellen?
Wo der Fehler ist weiss ich nicht, Du zeigst ja nur einen kleinen Ausschnitt - hast Du denn das komplette Beispiel mit dem gesamten Teil in geschweiften Klammern {} übernommen?
rhsist kein Objekt -rhsist einconst Account&.
Eine Referenz.
Genauer eine Referenz auf ein konstantesAccountObjekt - d.h. über die Referenz kannst Du das referenzierte Objekt nicht verändern. Willst Du ja auch gar nicht - Du willst es ja nur ausgeben. Schau in Deinen Unterlagen nach, was es mit Referenzen auf sich hat.Da ein Bild bekanntlich mehr sagt als tausend Worte noch ein komplettes (fehlerfreiesTM) Beispiel:
#include <iostream> #include <string> #include <vector> struct Account{ std::string name, nummer; }; std::ostream& operator<<(std::ostream& out, const Account& rhs){ out << "Account:\n" << rhs.name << '\n' << rhs.nummer; return out; } int main(){ Account accounts[] = {{"LawC++", "123"}, {"Furble Wurble", "4711"}}; std::cout << accounts[0] << '\n' << accounts[1] << '\n'; }Das ist übrigens nicht meine richtige Kontonummer...

-
Vielen Dank habs gepackt
