Operator overloading für vektoren C++

Gast #5872642
Ich versuche gerade den: << Operator, für Vektoren zu deklarieren und zu 
definieren, bekomme bei der Ausführung aber folgende Fehlermeldung:

error: no match for 'operator<<' (operand types are 'std::ostream {aka 
std::basic_ostream<char>}' and 'std::vector<Book>')




Auszug des Quellcodes:
1
// Library.h
2

3
class Library {
4
public:
5
    Library();
6
    void showBooks() {cout << mBook;}   // In dieser Zeile Fehlermeldung
7
    
8
private:
9
    vector<Book> mBook;
10
};
11

12
ostream& operator<<(ostream& os, const vector<Book>& b);

1
// Library.cpp
2

3
ostream& operator<<(ostream& os, const vector<Book>& b)
4
{
5
    for(auto& book : b)
6
        os << book;
7
    return os;
8
}
Gast #5872715
Habe es jetzt anders gelöst (in Anlehnung an den Vorschlag von 
tictactoe), dann spielt die Reihenfolge auch keine Rolle mehr (danke für 
den Hinweis Sebi):

1
// Library.h
2

3
class Library {
4
public:
5
    Library();
6
    void showBooks() {return mBook;}   // In dieser Zeile Fehlermeldung
7
    
8
private:
9
    vector<Book> mBook;
10
};
11

12
ostream& operator<<(ostream& os, const Library& l)



1
// Library.cpp
2

3
ostream& operator<<(ostream& os, const Library& l)
4
{
5
    for( auto& book : l.showBooks() )  // l.showBooks() entspricht dem Vektor mBook
6
        os << book;                
7
    return os;
8
}



g457 schrieb:
> - falsche Reihenfolge
> - grund- und nutzlose, fehlerverursachende Implementierung im Headerfile
>
> HTH

Hört sich so an als sei mein Programmierstil nicht der beste, vielleicht 
kann mir jemand ne gute Referenz nennen damit ich mich da verbessern 
kann?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.