В основной функции я вызываю функцию выбора. Цель состоит в том, чтобы выбрать тип сортировки в порядке увеличения или уменьшения.
Я звоню 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. Ошибка: «Нет экземпляра шаблона функции« Выбор »соответствует списку аргументов»
Я не знаю, в чем я не прав. Пожалуйста, помогите мне. Большое спасибо