在函数C ++中调用函数指针

时间:2018-05-17 14:45:42

标签: c++ pointers

在main函数中,我调用Choice函数。目标是选择具有增加或减少顺序的排序类型。 我调用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;
}

在main函数中,函数Choice在调用IsBigger和Interchange时有错误。错误是&#34;没有功能模板的实例&#34;选择&#34;匹配参数列表&#34; 我不知道自己错了什么。请帮我。非常感谢

0 个答案:

没有答案