Я пытаюсь реализовать/использовать интерфейс стиля компаратора, такой как тот, который вы найдете в Java, который позволит мне передать общий тип компаратора функции и использовать ее для сортировки набор данных.C++ Custom Comparison Function с шаблоном как функциональный параметр
Это потому, что мне нужны различные функции сравнения, и я хочу иметь возможность передать тот, который мне нужен, в функцию сортировки.
Вот фрагмент кода, что я до сих пор, и, надеюсь, вы можете сказать, что я имею в виду:
void Population::sort(const std::shared_ptr<Comparator<Solution>>& comparator)
{
std::sort(data.begin(), data.end(), comparator.get());
}
И интерфейс компаратор я пытался реализовать
template <typename T> class Comparator : public std::binary_function<T,T,bool>
{
public:
virtual ~Comparator();
virtual bool operator() (const T &o1, const T &o2 ) = 0;
};
Это, вероятно, что-то Очевидно, я делаю неправильно, так как не знаю много C++.
Cheers!
Я думаю, что вы закончили инженерное дело. виртуальные методы в компараторах, и вы, скорее всего, можете использовать 'std :: reference_wrapper' для экземпляра функторов со стороны вызывающего абонента. – juanchopanza