Вызовите указатель на функцию в функции C ++ - PullRequest
0 голосов

В основной функции я вызываю функцию выбора. Цель состоит в том, чтобы выбрать тип сортировки в порядке увеличения или уменьшения. Я звоню Choice, чтобы получить адрес двух функций IsBigger и Interchange. Вот код

#include <iostream>

using namespace std;

template <class T>
void Swap(T *a, T *b)
{
    T temp = *a;
    *a = *b;
    *b = temp;
}

template <class T>
void Interchange(T a[], int n, bool(*Cmp)(T, T))
{
   for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (Cmp(a[i], a[j]))
                Swap(&a[i], &a[j]);
}

template <class T>
void Insertion(T a[], int n, bool(*Cmp)(T, T))
 {
    int x, j;
    for (int i = 0; i < n; i++)
    {
        x = a[i]; j = i - 1;
        while (j >= 0 && !Cmp(a[j],x))
        {
            a[j + 1] = a[j];
            j--;
        }
    a[j + 1] = x;
    }
}

template <class T>
bool IsBigger(T a, T b)
{ 
    return a > b;
}


template <class T>
void Choice(T a[], int n, bool(*Cmp)(T, T), void(*Sort)(T*, int, bool*))
{
Sort(a, n, Cmp);
}

int main()
{
    int a[] = { 3,4,1,5 };
    Choice<int>(a, 4, &IsBigger, &Interchange);
    return 0;
}

В основной функции функция Choice имеет ошибку при вызове IsBigger и Interchange. Ошибка: «Нет экземпляра шаблона функции« Выбор »соответствует списку аргументов» Я не знаю, в чем я не прав. Пожалуйста, помогите мне. Большое спасибо

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