Это класс, который содержит перегруженный оператор функции:
template < typename KeyType=int >
class Less {
public:
bool operator()(const KeyType &a, const KeyType &b) const { return a < b; }
};
Как я могу использовать это? Этот класс указывается в заголовке, который также содержит спецификацию класса для кучи ADT. Я пытаюсь использовать его в одной из функций-членов моей кучи ADT, и не уверен в синтаксисе. Я предполагал, что это будет следующим:
if(Less<KeyType>::(param1, param2)){
...
Но компилятор выдает мне ошибку: expected unqualified-id before '(' token
Это работает так:
if(Less<KeyType>::operator()(param1, param2)){
...
Но должен быть способ использовать его по-другому, менее беспорядочно. Если бы я хотел, чтобы это выглядело так, я бы вообще не перегружал оператор и просто сделал бы его типичной функцией.
Я пытался провести некоторое исследование по этому вопросу, прежде чем задавать этот вопрос, но немного сложно найти ответ на этот вопрос. Мои поиски ведут меня к различным темам.
Этот оператор является нестатической функцией-членом. Итак, вам нужно создать объект типа Less
называть это. Например
if ( Less<>()( param1, param2 ) ) { /*...*/ }
Или же
if ( Less<SomeType>()( param1, param2 ) ) { /*...*/ }
Других решений пока нет …