As initially written it is a member function of class Contact, which means that the b in
b < c
is actually the invoking class and you therefore only need one argument (which will be c).
If it is to be a separate function then it will have to have two arguments; declared something like friendbooloperator<( const Contact b, const Contact c );
within your Contact class, together with a function definition
1 2 3 4
booloperator<( const Contact b, const Contact c )
{
// function definition
}
outside. Note that (a) there are now two arguments; (b) there is no Contact:: preceding the definition.
The only reason it has to be a "friend" is to get at the private data members First and Last.
There is a much better explanation in Herbert Schildt's brilliant book on C++ programming.