C ++, как сортировать переменную массива [закрыто]

Я получил вызов родительского класса

Shape

Shape получил 2 детских звонка

Square and Rectangle

Класс Shape получил переменную область вызова, которая имеет тип int

Итак, я создал некоторый объект Square, Rectangle, как это

int main()
{
    Shape *shaped[100];

    //then i did some adding of object..
    int areaValue;
    areaValue=1;

    shaped[0] = new Rectangle();
    shaped[0]->setArea(areaValue);

    areaValue=7;
    shaped[1] = new Square();
    shaped[1]->setArea(areaValue);

    areaValue=5;
    shaped[2] = new Square();
    shaped[2]->setArea(areaValue);

    shapeCounter = 3;

    sort(shaped[0],shaped[2]);

    for (int i=0;i<shapeCounter;i++)
    {
        cout << shaped[i].getArea() << endl;
    }

}

Я пытаюсь сортировать по возрастанию, но это не работает. без изменения положения, область все еще в той же последовательности.

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

Обновить:

Я сделал следующие изменения в Shape.cpp

 bool Shape::orderByArea(const Shape* lhs, const shape* rhs)
    {
      return lhs->area() < rhs->area();
    }

Затем на main.cpp я сделал это

std::sort(shaped, shaped + 3, orderByArea);

однако я получаю ошибку, orderByArea не был объявлен в этой области.

Еще одна вещь, которую я попробовал, была: Сортировать используя вектор

На Shape.h

public:

bool operator<const Shape& x) const
{
return area < x.area;
}

На main.cpp

vector<ShapeTwoD*> sortVector;
sortVector.clear();
sortVector.assign(shaped,shaped + shapeCounter);

sort(sortVector.begin(),sortVector.end());

for(int i=0;i<shapeCounter;i++)
{
cout << sortVector[i].toDisplay() << endl;
}

Но, похоже, ничего не отсортировано. Я стараюсь сделать распечатку, ее позиция такая же.

Обновления: исправлено. сортировка работает. Спасибо экспертам!

У меня есть еще один вопрос

Форма * в форме [100];

Как мне скопировать значение

Shape *shaped[100];

в

vector<Shape> myVector;

вместо

vector<Shape*> myVector;

так что я могу использовать обычную сортировку объектов.

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

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