Estoy tratando de encontrar una manera de cómo asignar un puntero a funciones con diferente número de argumentos.C++: puntero de función para funciones con número variable de argumentos
Tengo un ciclo while que toma una serie de funciones diferentes como una declaración condicional, así que en lugar de escribir múltiples ciclos while con exactamente el mismo código dentro me gustaría tener uno con un puntero a la función. Todas las funciones son del formato bool f(...)
. Creo que algo de código mejor ilustrará lo que quiero decir:
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)())
{ ... }
Ahora lo que evidentemente no funciona porque las funciones tienen diferentes firmas. ¿Es posible hacer que funcione de manera similar? ¿Son los functoides algo que debería ver?
¿Cómo sabría cómo aplicar ese puntero de función si no sabe cuántos argumentos se necesitan? – mfontanini
Tenga en cuenta que su sintaxis de asignación a un puntero a función no es válida, está * invocando * las funciones, tomando el resultado, obteniendo un puntero a su almacenamiento temporal y asignando * ese * al puntero de función que declaró previamente. –
Sí, sé que no es una sintaxis válida. Simplemente muestra la idea. – jaho