首页 > 解决方案 > 在函数 C++ 中调用函数指针

问题描述

在 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 时出错。错误是“没有函数模板“选择”的实例与参数列表匹配”我不知道我错了什么。请帮我。非常感谢

标签: c++pointers

解决方案


推荐阅读