C ++ como ordenar uma variável de array [fechado]

Eu tenho uma chamada de classe pai

Shape

Forma tem 2 chamada de criança

Square and Rectangle

A classe Shape recebeu uma área de chamada variável, que é do tipo int

Então eu criei um objeto de Square, Rectangle como este

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;
    }

}

Eu tento classificar por área ascendente, mas não funciona. nenhuma mudança de posição, a área ainda está na mesma sequência.

Obrigado por toda ajuda!

Atualizar:

Eu fiz as seguintes alterações no Shape.cpp

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

Então no main.cpp eu fiz isso

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

no entanto, recebo um erro, orderByArea não foi declarado neste escopo.

Outra coisa que eu tentei foi: Para classificar usando o vetor

Em Shape.h

public:

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

No 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;
}

Mas nada parece classificado. Eu tento fazer uma impressão sua posição é a mesma.

Atualizações: está consertado agora. o tipo está funcionando. Graças aos especialistas!

Eu tenho outra pergunta é

Forma em forma [100];

Como faço para copiar o valor de

Shape *shaped[100];

para dentro

vector<Shape> myVector;

ao invés de

vector<Shape*> myVector;

então eu posso usar o tipo normal de objeto.

questionAnswers(2)

yourAnswerToTheQuestion