C ++ векторная сортировка с моей собственной функцией

Info:
Parent Class: Vehicle
Child Class : Car & Lorry

Я получил вектор, и я пытаюсь отсортировать его по возрастанию

сортировать (myVector.begin (), myVector.end (), compareByArea);

так в Vehicle.h

я сделал

class VehicleTwoD
{
private:
//some variable
public:
bool compareByArea(const VehicleTwoD,const VehicleTwoD);
}

и в Vehicle.cpp я сделал это

bool VehicleTwoD::compareByArea(const VehicleTwoD &a,const VehicleTwoD &b)
{
return a.getArea() < b.getArea();
}

Ошибка: у VehicleTwoD нет члена с именем getArea.

Он находится в моем детском автомобиле и Грузовик и двухместная площадка также объявляются у ребенка.

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

Есть ли лучший способ сделать это.

Спасибо за помощь!

Additional Info:

У меня есть эта функция getArea () в Car & Грузовик, который просто

double Car::getArea()
{ return area;}

double Lorry::getArea()
{ return area;}

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

sortVector.assign(vehicletwod, vehicletwod + arrayCounter);
sort(sortVector.begin(),sortVector.end(),compareArea);

// но сортировка не работает

Я неt знать, где создать CompareArea, которое может получитьArea () объекта 1 против объекта 2 и вернуть результат bool;

Я пытаюсь создать его в VehicleTwoD, используя этот

bool VehicleTwoD::compareByArea(const VehicleTwoD &a,const VehicleTwoD &b)
{
return a.getArea() < b.getArea();
}

Но проблема в том, что VehicleTwoD неу них есть функция getArea, они расположены у дочерних элементов. Как я должен получить это исправление. Спасибо..

Благодаря помощи:

Я попробовал следующее

template bool compareByArea(const T &a, const T &b) {
    return a.getArea() < b.getArea();
}

и я заявляю об этом в файле .h,

public:
template
bool compareByArea(const T,const T);
virtual double getArea();

тогда в моем main.cpp я попробовал

sortVector.assign(vehicletwod, vehicletwod + arrayCounter);
sort(sortVector.begin(),sortVector.end(),sortVector[0].compareArea);

Это дает мне ошибку

ошибка запроса для члена compareByArea в sortVector.std :: vector <_TP, _ALLOC ....... который не относится к типу класса 'VehicleTwoD *

Если я сделаю это

  sortVector.assign(vehicletwod, vehicletwod + arrayCounter);
  sort(sortVector.begin(),sortVector.end(),sortVector[0].compareArea);

Я получу ошибку CompareByArea не было объявлено в этой области.

Что я должен делать? Я объявил CompareByArea в VehicleTwoD, который включен в main.cpp

VehicleTwoD является родительским классом, и я также виртуальный двойной getArea (), поэтому при вызове getArea он будет использовать дочерний getArea, потому что закрытая переменная - area является дочерней, а область возврата функции getArea () - дочерней.

Что мне делать? застрял. Спасибо!

Последнее обновление снова:

Я пытаюсь отсортировать вектор по CompareByArea, где меньшая область будет отсортирована на самом высоком уровне, а большая 1 будет внизу.

Проблема в том, что getArea является функцией Car & Lorry (дочерний класс) и я создаю this CompareByArea на main.cpp

sortVector - векторная копия транспортных средств.

Вот как я устанавливаю значение в моем транспортном средстве ...

if(vehicleType=="Car")
{
vehicletwod[arrayCount] = new Car();
vehicletwod[arrayCount].setDimension();
//set area
vehicletwod[arrayCount].setArea();
cout < "Done setting the data";
}

Ответы на вопрос(2)

Ваш ответ на вопрос