Я только что выучил указатель в C ++, и у меня есть задание. Частично это сортировать время. Поэтому я хотел бы попробовать передать указатель функции из основного в void bubbleSort()
, а затем передать его в int compareTime()
void bubbleSort(timeArr& arr) {
for (size_t i = 0; i < arr.size; i++)
for (size_t j = i + 1; j < arr.size; j++)
if (compareTime(arr.t[j],arr.t[i], ascending))
swap(arr.t[j], arr.t[i]);
}
int compareTime(time t1, time t2, int (*compare)(int, int)) {
if (t1.year == t2.year)
if (t1.month == t2.month) {
return (*compare)(t1.date, t2.date);
}
else return ((*compare)(t1.month, t2.month));
else return (*compare)(t1.year, t2.year);
}
int ascending(const int a, const int b) {
return b < a;
}
int descending(const int a, const int b) {
return b > a;
}
Я хочу что-то вроде этого:
int main(){
//do stuff
bubbleSort(arr, ascending);
}
void bubbleSort(timeArr& arr, int (*compare)(int, int)) {
for (size_t i = 0; i < arr.size; i++)
for (size_t j = i + 1; j < arr.size; j++)
if (compareTime(arr.t[j],arr.t[i], int (*compare)(int, int)))
swap(arr.t[j], arr.t[i]);
}
Можно ли это сделать