c++ - 在函数 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 时出错。错误是“没有函数模板“选择”的实例与参数列表匹配”我不知道我错了什么。请帮我。非常感谢
解决方案
推荐阅读
- dynamic-programming - 给定两个字符串 S 和 T,求 S 中不是 T 中的子序列的最短子序列的长度
- r - 双重积分给出错误对象 y not found
- python - Python 检查参数是按位置还是按关键字传入
- ios - 对未在 SwiftUI 中发布的结构的更改
- javascript - 文本输入不更新值
- c# - Opengl OpenTK - 绘制深度缓冲区时出现白屏
- python - 列表元素配置
- python - 即使失败,Python 服务也会被重新报告为成功
- wordpress - 使用 OpenLiteSpeed Cache 处理时间敏感数据的缓存
- c - C11, 6.6.10:IB:其他形式的常量表达式:需要额外的一致性文档