In Klasse-Manager Ich habe diese Methoden obcjects. Klasse Welt enthält:Sortieren Vektor von Zeigern nach dem Wert der Eigenschaft dieser Objekte
vector<Element*> elements;
vector<Element*> World::GetElementss()
{
return this->elements;
}
Klasse Element enthält:
int Id;
Ich habe 2 Fragen:
Warum es nicht funktioniert? Ich habe folgenden Fehler: "Fehler C2065 'compareById': nicht deklarierte Kennung"
Schließlich möchte ich Id (in der Klasse Element) private und Rückgabewert dieses Feldes durch öffentliche Methode GetId(). Es ist illigal, wenn ich diese Methode auf const-Objekt ausführen möchte, also habe ich keine Ahnung, was ich tun kann, um diese Vektoren unter diesen Bedingungen zu sortieren.
Dieser Fehler wurde tatsächlich durch falsche Reihenfolge verursacht. Aber jetzt, wenn ich SortElementsById() Methode ausführen, habe ich Laufzeitfehler: "Ausdruck: Vektor Iterator inkompatibel". – Sigger
Das ist, weil 'GetElements()' eine Kopie des Vektors zurückgibt, nicht den gleichen Vektor, also 'world-> GetElements(). Begin()' und 'world-> GetElements(). End()' sind Iteratoren von zwei verschiedene Vektoren. 'GetElements()' sollte als Referenz zurückgegeben werden. – aschepler
Ich habe alle meine Probleme gelöst, vielen Dank. – Sigger