#include #include "Book.h" #include "Volume.h" #include #include #include "Author.h" struct CompareByAuthor { bool operator() ( const Text * t1, const Text * t2 ) { string a1, a2; t1->accept( author_ ); a1 = author_.author(); t2->accept( author_ ); a2 = author_.author(); return a1 < a2; } private: Author author_; }; int main() { cout << "esempio di ordinamento" << endl; Book b1 ( "Dante Alighieri", "La Divina Commedia" ); Book b2 ( "Alessandro Manzoni", "I promessi sposi" ); Book b3 ( "Erich Gamma et at.", "Design Patterns" ); Volume v1 ( "J.R.R. Tolkien", "Il signore degli anelli", 1 ); Volume v2 ( "J.R.R. Tolkien", "Il signore degli anelli", 2 ); Volume v3 ( "J.R.R. Tolkien", "Il signore degli anelli", 3 ); vector v; v.push_back( &b1 ); v.push_back( &b2 ); v.push_back( &b3 ); v.push_back( &v1 ); v.push_back( &v2 ); v.push_back( &v3 ); vector::const_iterator i; CompareByAuthor comp; sort( v.begin(), v.end(), comp ); for( i = v.begin(); i != v.end(); i++ ) (*i)->print(); return 0; }