C ++ jak sortować zmienną tablicową [zamknięte]

Mam połączenie klasy macierzystej

Shape

Kształt dostał 2 wezwania dziecka

Square and Rectangle

Klasa Shape ma zmienny obszar wywołania, który jest typu int

Stworzyłem więc obiekt Square, Rectangle w ten sposób

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

}

Staram się sortować według rosnącego obszaru, ale to nie działa. bez zmiany pozycji, obszar nadal w tej samej kolejności.

Dzięki za pomoc!

Aktualizacja:

Zrobiłem następujące zmiany w Shape.cpp

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

Następnie w main.cpp zrobiłem to

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

jednak pojawia się błąd, orderByArea nie została zadeklarowana w tym zakresie.

Inną rzeczą, którą próbowałem, była: Aby posortować za pomocą wektora

W Shape.h

public:

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

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

Ale nic nie wydaje się posortowane. Próbuję wydrukować jego pozycję jest taka sama.

Aktualizacje: Naprawiono teraz. sort działa. Dzięki ekspertom!

Mam jeszcze jedno pytanie

Kształt * w kształcie [100];

Jak skopiować wartość

Shape *shaped[100];

w

vector<Shape> myVector;

zamiast

vector<Shape*> myVector;

więc mogę używać zwykłego sortowania obiektów.

questionAnswers(2)

yourAnswerToTheQuestion