tom*_*012 1 c++ methods object
假设我有一个具有三个属性的类Car,所有属性都是inttype:year,modelNo和topSpeed.
我有一个汽车列表,以及一个对此列表进行排序的函数.该方法目前通过car.modelNo对汽车进行分类.
如果我想要按年份,modelNo或topSpeed排序,我可以制作三种不同的方法sortByYear,sortByModelNo等等.
有没有办法可以实现一个排序方法,而只是传递它想要排序的属性的名称?所以我可以打电话给sortCars(carsList, modelNo);
OrsortCars(carsList, year);
这些属性中的每一个都将始终为int,并且列表将仅包含Car对象.
是的,使用指向成员的指针.
void sortCars(std::vector<Car> &cars, int Cars::*property) {
std::sort(begin(cars), end(cars), [=](Car const &a, Car const &b){
return (a.*property) < (b.*property);
});
}
Run Code Online (Sandbox Code Playgroud)
调用语法:
sortCars(myCars, &Cars::modelNo);
Run Code Online (Sandbox Code Playgroud)