J'ai cette classeC++ tableau de tri par variable privée
Class VehicleTwoD
{
private:
doubleArea;
}
donc je veux trier par doubleArea;
à mon main.cpp
J'obtenu
int main()
{
VehicleTwoD *vehicletwod[100];
sort(vehicletwod[0], vehicletwod[vehicleCounter]);
for (int i=0;i<vehicleCounter;vehicleCounter++)
{
cout << "Vehicle " << i << end;
cout << vehicletwod[i]->toDisplay() << endl;
}
}
Below is my operator overload at Vehicle.h
bool VehicleTwoD::operator<(const VehicleTwoD& rhs) const
{
return area > rhs.area;
}
Lorsque je tente exécuter le programme, je reçois erreur d'exécution - Segmentation faute de vidage de base.
En supposant que mon compteur du véhicule est mal et mon Vehicletwod a obtenu au moins 2 objet lorsque je tente cours toDisplay, ce qui est en fait a mal tourné ..
Mise à jour:
Je viens de faire cela grâce à la commentaires précieux que je reçois des experts ici.
à main.cpp
int main()
{
VehicleTwoD *vehicletwod[100];
for(int i=0;i<100;i++)
{
vehicletwod[i] = new VehicleTWoD();
}
//some computation then I go to sort..
sort(&vehicletwod[0],&vehicletwod[vehicleCounter]);
for(int i=0;i<vehicleCounter;i++)
{
cout << vehicletwod->toDisplay() << endl;
}
}
La sortie restent les mêmes, rien trié .. Je ne sais pas pourquoi ..
c'est l'opérateur booléen je l'ai fait au VehicleTwoD.h
VehicleTwoD.h
public:
bool operator<(const VehicleTwoD&) const;
VehicleTwoD.cpp
bool VehicleTwoD::operator<(const VehicleTwoD& rhs) const
{
return area > rhs.area;
}
Rien est trié .. J'espère au moins ce genre soit décroissant ou croissant ..
j'étais étonnant s'il y a une manière que je peux affecter mon tableau de VehicleTwoD dans un appel vecteur sortVector, car après trier en croissant, je veux trier en descendant aussi. Donc une fonction inverse dans le vecteur sera bonne pour le résoudre.
Une suggestion? Merci à tous les experts utiles et gentils ici !!
Comment libérer les mémoire, Merci! – user1595932
J'ai mis à jour ma question avec des solutions ajoutées ici. mais le tri ne trie toujours rien. – user1595932
Dans votre opérateur surchargé, il semble que ce soit: 'return area