Ошибка при сортировке списка со своим типом данных C2064. Результатом вычисления фрагмента не является функция, принимающая 2 аргументов
Есть классы Car и дочерний Truck с полями скорость и год выпуска. Есть списки ( list<Car>
, list<Truck>
) с экземплярами классов, который по этим полям нужно отсортировать. Использую sort() в который передаю компаратор. В чём проблема? Может как-то по-другому можно отсортировать списки по этим полям?
cars.sort(Comparator(*cars.begin(), *cars.end(), *trucks.begin(), *trucks.end(), asc, false, parameter));
trucks.sort(Comparator(*cars.begin(), *cars.end(), *trucks.begin(), *trucks.end(), asc, true, parameter));
Ошибка C2064 результатом вычисления фрагмента не является функция, принимающая 2 аргументов xutility 1137
Код компаратора:
bool Comparator(Car car1, Car car2, Truck truck1, Truck truck2, bool asc, bool truck, string parameter)
{
if (parameter == "year")
{
if (!truck)
{
if (asc)
{
return car1.year < car2.year;
}
else
{
return car1.year > car2.year;
}
}
else
{
if (asc)
{
return car1.year < car2.year;
}
else
{
return truck1.year > truck2.year;
}
}
}
else
{
if (!truck)
{
if (asc)
{
return car1.speed < car2.speed;
}
else
{
return car1.speed > car2.speed;
}
}
else
{
if (asc)
{
return truck1.speed < truck2.speed;
}
else
{
return truck1.speed > truck2.speed;
}
}
}
}