Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wypisaniem wektora obiektow

Ostatnio zmodyfikowano 2016-04-26 09:00
Autor Wiadomość
mhabi
Temat założony przez niniejszego użytkownika
Problem z wypisaniem wektora obiektow
» 2016-04-25 22:10:04
Jak wypisac zawartosc wektora obiektow? Jestem dosc nowy w obiektowce, poczytalem o przeladowaniu operatorow i probuje zrobic to w ten sposob, jednak sa problemy.
C/C++
#ifndef BOOK_H
#include<string>
#include<vector>
#include<iostream>
#define BOOK_H

class book
{
public:
    std::string Author, Title;
    int Year;
    book() { }
    book( std::string author, std::string title, int year )
        : Author( author )
         , Title( title )
         , Year( year )
    { }
    ~book() { }
};

struct library
{
public:
    std::vector < book > books;
    void add_book( const book & value ) { books.push_back( value ); }
    std::ostream & operator <<( std::ostream & out, std::vector < book >& books );
};


#endif // BOOK_H

||=== Build: Debug in Library (compiler: GNU GCC Compiler) ===|
/home/mh/workspace/C_Projects/Library/book.h|22|error: ‘std::ostream& library::operator<<(std::ostream&, std::vector<book>&)’ must take exactly one argument|

Wywala mi taki blad podczas kompilacji i nie wiem jak sie z tym uporac, choc sam sie zastanawiam czy moj sposob jest prawidlowy.
P-147667
michal11
» 2016-04-26 01:04:04
operator << nie może być metodą, zrób go jako funkcję zaprzyjaźnioną.
P-147671
carlosmay
» 2016-04-26 09:00:20
operator << nie może być metodą
Może być. (Jednak nieintuicyjnie się stosuje.)

std::ostream & operator <<( std::ostream & out, std::vector < book >& books );
Jedak nie w tej postaci.
operator <<
 jest dwuargumentowy (obiekt i strumień).
W metodzie obiekt przekazywany jest niejawnie, więc na liście argumentów metody powinien być tylko strumień.
P-147674
« 1 »
  Strona 1 z 1