#include <boost/shared_ptr.hpp> #include <vector> #include <algorithm> #include <stdlib.h> #include "./Salaried.h" #include "./SalariedBonus.h" using boost::shared_ptr; using std::vector; bool SortFunction(shared_ptr<Salaried> a, shared_ptr<Salaried> b) { return a->Earnings() < b->Earnings(); } void PrintFunction(shared_ptr<Salaried> a) { a->PrintEarnings(); } int main(int argc, char **argv) { vector<shared_ptr<Salaried> > vec; vec.push_back(shared_ptr<Salaried>(new Salaried(110000))); vec.push_back(shared_ptr<Salaried>(new SalariedBonus(120000, 80000))); vec.push_back(shared_ptr<Salaried>(new SalariedBonus(55000, 10000))); sort(vec.begin(), vec.end(), &SortFunction); for_each(vec.begin(), vec.end(), &PrintFunction); return EXIT_SUCCESS; }