Ваш оператор <<
должен иметь этот прототип:
std::ostream& operator << ( std::ostream &out, const Library & l )
^^^^^^^^^^^^^
Вам необходимо вернуть ссылку на объект std::ostream
, чтобы можно было выполнять цепочку потоковых операций.
Кроме того, если вы объявите его своим другом в своем классе Library
, вы сможете получить доступ ко всем членам (частным / защищенным) класса Library
в вашей перегруженной функции.
Как таковой, я не понимаю ваш код. Вы объявили свой оператор <<
как:
friend Library operator << ( Library& out, const Library & l );
^^^^^^^^^^^^
Вы определили свою операторную функцию с прототипом:
Library operator << ( ostream &out, const Library & l )
^^^^^^^^^^^
ОниDifferent!
Короче говоря, вы никогда не объявляли функцию, к которой вы обращаетесь к приватному члену, как к другу вашего класса и, следовательно, к ошибке.Кроме того, тип возврата является неправильным, как я уже упоминал ранее.