可能重复:
使用我自己的函数进行 C++ 向量排序
C++ 自由函数。向量排序和问题
我尝试根据我最近从这里的一位专家那里收到的回复创建一个免费函数。
我所做的是在我的 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();
我想要实现的目标
我正在尝试通过 compareByArea 对向量进行排序,其中较小的区域将在最高处排序,而较大的 1 将在底部。
问题是 getArea 是 Car & Lorry (子类)的函数,我在 main.cpp 创建了这个 compareByArea
sortVector 是 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)
感谢大家的帮助!!