Listing 1: Class person with comparison function objects
//person.h
#ifndef __PERSON_H__
#define __PERSON_H__
#include <string>
class person
{
public:
//constructors and access functions
private:
std::string first_;
std::string last_;
unsigned long id_;
//...
friend struct less_first;
friend struct less_last;
friend struct less_id;
//...
};
struct less_first
{
bool operator()(person const &lh, person const &rh) const
{return lh.first_ < rh.first_;}
};
struct less_last
{
bool operator()(person const &lh, person const &rh) const
{return lh.last_ < rh.last_;}
};
struct less_id
{
bool operator()(person const &lh, person const &rh) const
{return lh.id_ < rh.id_;}
};
//...
#endif