我正在尝试创建一个函数数组,这些函数将从我的排序类中调用不同的排序函数。 我要传递的数组是我自己的数组类中的一个。
https://cboard.cprogramming.com/c-programming/128162-array-functions.html 这个网站展示了如何在您所在的类中并且没有参数的情况下执行此操作,但是我想使用数组从另一个类中调用函数。 需要传入参数。
//What I want to do
static int (*func[2])() = { Sort.BruteForceBubble, Sort.FlaggedBubble};
func[1](&myArrayCopy); //Too many arguments
//What works
Sort.BruteForceBubble(&myArrayCopy);
Sort.FlaggedBubble(&myArrayCopy);
我的目标是调用一个遍历所有功能的循环,以便我可以比较所有功能的速度。
答案 0 :(得分:2)
int (*func[2])()
您声明的函数指针不带参数。正确声明函数arg类型,您应该一切顺利。
答案 1 :(得分:1)
切换到case语句使一切变得更加简单:
switch (sortType)
{
case 0:
Sort.BruteForceBubble(&myArrayCopy);
break;
case 1:
Sort.FlaggedBubble(&myArrayCopy);
break;
}
尽管类似func[0](&myArrayCopy);
这样的东西会更好,但是实现起来却容易得多。