Как использовать перегруженную функцию operator (operator ()) другого класса?

Это класс, который содержит перегруженный оператор функции:

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)){
...

Но должен быть способ использовать его по-другому, менее беспорядочно. Если бы я хотел, чтобы это выглядело так, я бы вообще не перегружал оператор и просто сделал бы его типичной функцией.

Я пытался провести некоторое исследование по этому вопросу, прежде чем задавать этот вопрос, но немного сложно найти ответ на этот вопрос. Мои поиски ведут меня к различным темам.

0

Решение

Этот оператор является нестатической функцией-членом. Итак, вам нужно создать объект типа Less называть это. Например

if ( Less<>()( param1, param2 ) ) { /*...*/ }

Или же

if ( Less<SomeType>()( param1, param2 ) ) { /*...*/ }
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]