C++ struct sorting error

c++, functor, sorting, struct

Solution

`sort` expects a function that returns `bool`, which is true iff the lhs precedes the rhs:

bool operator() (const Book& lhs, const Book& rhs)
{
    return lhs.H < rhs.H; 
}

Also note the change to `const Book&` parameters, to avoid copying.

Problem

I am trying to sort a vector of custom struct in C++ ``` struct Book{ public:int H,W,V,i; }; ``` with a simple functor ``` class CompareHeight { public: int operator() (Book lhs,Book rhs) { return lhs.H-rhs.H; } }; ``` when trying : ``` vector<Book> books(X); ..... sort(books.begin(),books.end(), CompareHeight()); ``` it gives me exception "invalid operator <" What is the meaning of this error? Thanks

Original source