Передать указатель функции из основного в функцию в функцию - PullRequest
1 голос
/ 26 марта 2020

Я только что выучил указатель в 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]);
    }

Можно ли это сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...