【发布时间】:2012-06-17 17:45:12
【问题描述】:
我正在尝试找出一种方法来将函数指针分配给具有不同数量参数的函数。
我有一个 while 循环,它接受许多不同的函数作为条件语句,所以我不想用完全相同的代码编写多个 while 循环,而是希望有一个带有函数指针的循环。所有函数的格式为bool f(...)。我认为一些代码最能说明我的意思:
int a, b, c, d;
MyClass* my_class;
typedef bool (MyClass::*my_fun_t)();
my_fun_t my_fun;
if (condition1)
my_fun = &MyClass::function_one();
else if (condition2)
my_fun = &MyClass::function_two(a, b);
else if (condition3)
my_fun = &MyClass::function_three(a, b, c);
else if (condition4)
my_fun = &MyClass::function_four(a, b, c, d);
while ((my_class->*my_fun)())
{ ... }
现在这显然不起作用,因为函数具有不同的签名。有没有可能让它以类似的方式工作? functoids 是我应该看的东西吗?
【问题讨论】:
-
如果你不知道它需要多少个参数,你怎么知道如何应用该函数指针?
-
请注意,您分配给函数指针的语法无论如何都是无效的,您正在 调用 函数,获取结果,获取指向其临时存储的指针,然后分配 那个指向你事先声明的函数指针。
-
是的,我知道这不是一个有效的语法。它只是展示了这个想法。
标签: c++ function function-pointers member-function-pointers