私はこのクラスを持っています
Class VehicleTwoD
{
private:
doubleArea;
}
だから私はdoubleAreaでソートしたい。
私のmain.cppで
私は得た
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;
}
プログラムを実行しようとすると、実行時にエラーが発生します - セグメンテーション コア ダンプ エラーです。
Vehicle Counter に問題がなく、Vehicletwod がディスプレイに実行しようとしたときに少なくとも 2 つのオブジェクトを取得したと仮定すると、実際に何が問題になったのか..
アップデート:
ここで専門家から受け取った貴重なフィードバックのおかげで、これを行いました。
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;
}
}
出力は同じままで、何もソートされていません..理由はわかりません..
これは、VehicleTwoD.h で行ったブール演算子です。
VehicleTwoD.h
public:
bool operator<(const VehicleTwoD&) const;
VehicleTwoD.cpp
bool VehicleTwoD::operator<(const VehicleTwoD& rhs) const
{
return area > rhs.area;
}
何もソートされていません..少なくとも降順または昇順でソートされることを願っています..
昇順で並べ替えた後、降順でも並べ替えたいので、VehicleTwoD 配列をベクトル呼び出し sortVector に割り当てる方法があるかどうか疑問に思いました。
したがって、ベクトルの逆関数はそれを解決するのに適しています。
なにか提案を ?ここにいる親切で親切な専門家の皆さんに感謝します!!