class counter { friend int operator<(counter&, int); public: counter(int v = 0 ); counter( char* s, int v = 0 ); ~counter() { delete[] id; } const char* name() { return id; } int value() const { return n; } void operator++() { n = n + 1; } private: int n; char* id; void init(char* s); }; int operator<(counter& c, int i) { return c.n < i; }