C ++ wie man eine Array-Variable sortiert [closed]

Ich habe einen Elternklassenanruf bekommen

Shape

Shape hat 2 Kinder angerufen

Square and Rectangle

Die Shape-Klasse hat einen variablen Aufrufbereich vom Typ int

Also habe ich ein Objekt von Square, Rectangle wie dieses erstellt

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

}

Ich versuche nach aufsteigendem Gebiet zu sortieren, aber es funktioniert nicht. Keine Positionsänderung, der Bereich bleibt in der gleichen Reihenfolge.

Danke für alle Hilfe!

Aktualisieren:

Ich habe die folgenden Änderungen an Shape.cpp vorgenommen

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

Dann habe ich das bei main.cpp gemacht

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

Ich erhalte jedoch eine Fehlermeldung, orderByArea wurde in diesem Bereich nicht deklariert.

Eine andere Sache, die ich versuchte, war: Nach Vektor sortieren

Bei Shape.h

public:

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

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

Aber nichts scheint sortiert zu sein. Ich versuche, einen Ausdruck zu machen, dessen Position gleich ist.

Updates: Es ist jetzt behoben. Art funktioniert. Vielen Dank an die Experten!

Ich habe noch eine Frage

Form * geformt [100];

Wie kopiere ich den Wert von

Shape *shaped[100];

in

vector<Shape> myVector;

anstatt

vector<Shape*> myVector;

So kann ich die normale Objektsortierung verwenden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage