Problem z wypisaniem wektora obiektow
Ostatnio zmodyfikowano 2016-04-26 09:00
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. #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
||=== 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. |
|
michal11 |
» 2016-04-26 01:04:04 operator << nie może być metodą, zrób go jako funkcję zaprzyjaźnioną. |
|
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ń. |
|
« 1 » |