我在c ++中有几个重载函数,我想创建它们的数组,以便我可以在循环中使用它们(实际上我想随机调用它们)。你能帮忙吗 ?教程仅展示如何使用相同的函数参数来执行函数指针数组。
答案 0 :(得分:1)
我认为这里的主要问题是,你想要的东西似乎需要在执行时间而不是在编译时确定函数参数的类型和顺序。你的主要目标是什么?执行速度?代码可读性或“正确性”?如果你追求执行速度,那么我认为有一些丑陋的解决方案。到目前为止,我理解你的问题,你将决定使用随机选择的数组索引调用哪个“重载函数”。因此,一个不一定安全的可能性是使用仿函数并将数组指针中的每个仿函数的创建者传递给它将来将使用的变量,就好像这些变量是它的参数一样。但是,只有当你总是使用与“函数”调用的参数相同的变量时,这才有效。
答案 1 :(得分:0)
等等,你想随机调用一组重载函数吗?
为什么不使用快速rand函数然后使用switch语句?
例如,假设您有3个重载函数:srand(time(0));
int rand = rand() % 3 // Replace 3 with number of functions.
switch(rand)
{
case 0:
test("this is a string!");
break;
case 1:
test(12, 16);
break;
case 2:
test(16.2, 3, "Hello, World!");
break;
}
否则,由于数组中的每个函数都不同并且期望不同的参数,您很可能会遇到麻烦。你需要一些方法来确定哪些参数只用于函数的地址而不能用于哪个函数。
我会说除非你使用类似于上面描述的方法,否则完成你要做的事是不可能的,即使这样你也需要从某个地方获取参数。