bhe, non c'e' nulla di sbagliato a dire sovrapposizione, e' il corrispondente italiano di overloading...

aehm...
codice:
friend bool operator==(const libreria& l);

...

bool libreria::operator==(const libreria& l)
se usi un membro friend non devi mettere l'operatore del campo di risoluzione (:: per capirci in fretta)

Comunque e' una cosa abbastanza comune che l'overloading degli operatori non e' spiegato molto bene... con la tua guida, sono arrivato a quata 5 manusali su 6 che sono spiegati da cani ^_^

ciao