重複の可能性:
自分の関数を使用した C++ ベクトルの並べ替え
C++ フリー関数。ベクトルの並べ替えと問題
ここの専門家の 1 人から最近受け取った応答に基づいて、無料の関数ベースを作成しようとしました。
私がしたことは私のmain.cppでした
この関数を main.cpp で作成しました
template<typename T> bool compareByArea(const T &a, const T &b) {
return a.getArea() < b.getArea();
}
私は実際に私のmain.cppでこれを手に入れました
sortVector.assign(vehicletwod, vehicletwod + arrayCounter);
sort(sortVector.begin(),sortVector.end(),sortVector[0].compareArea);
私のプログラムには1つの親クラスと2つの子クラスがあります
Parent: Vehicle
Child: Car & Lorry
カー&ローリーは
private:
double area;
public:
double getArea();
私が達成しようとしていること
小さい領域が一番上に並べ替えられ、大きい領域が一番下になります。
問題は、getArea が Car & Lorry (子クラス) の関数であり、main.cpp でこの compareByArea を作成することです。
sortVector は vehicletwod のベクトル コピーです。
vehicletwod に値を設定する方法は、この方法です。
if(vehicleType=="Car")
{
vehicletwod[arrayCount] = new Car();
vehicletwod[arrayCount].setDimension();
//set area
vehicletwod[arrayCount].setArea();
cout << "Done setting the data";
}
領域の昇順で並べ替えるにはどうすればよいですか。
コンパイル エラー:
no matching function for call to 'sort(std::vector<VehicleTwoD*>::iterator, std::vector<VehicleTwoD*>::iterator, <unresolved overloaded function type>)'
note: template<class _RAIter> void std::sort (_RAIter, _RAIter)
note: template<class _RAIter, class _Compare> void std::sort(_RAiter, _RAIter, _Compare)
すべての助けをありがとう!!