2015-05-26 2 views
-1

У меня есть общий классC++ - получить равенство из класса Сравнить

template < class T, class Compare > 
class MyClass {..}; 

Мне нужно проверить равенство двух объектов с сравнения. Я знаю два способа сделать это.

Метод

bool isEqual(T first, T second) { 
    return (!Compare()(first,second) && !Compare()(second,first)); 
}; 

или

bool isEqual(T first, T second) { 
     return first == second; 
}; 

Но правильно использовать ==? Если нет, есть ли способы сделать это?

+0

Нужно ли вам реализовать класс Compare или вы хотите получить подсказку о том, как его использовать? – marom

+0

Как его использовать, например, у меня есть Сравнить , мне нужно просто получить равенство. – sinitram

ответ

2

Неправильно использовать ==, если только по той причине, что класс-экземпляр может не поддерживать этот оператор.

Что касается

Если нет, то есть ли способы это сделать?

Существует - первый способ, которым вы упомянули.


Кстати, если ваши Compare модели понятие двоичный предикат (который, вероятно, должен на соответствие большей части STL), он должен быть

Compare(first, second) 

Форма

Compare(first)(second) 

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

Смежные вопросы