C++: указатель функции на функцию с переменным числом аргументов

Я пытаюсь понять, как можно присвоить указатель функции функциям с разным количеством аргументов.

У меня есть цикл 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)()) 
{ ... }

Очевидно, что это не работает, потому что функции имеют разные сигнатуры. Можно ли вообще заставить его работать подобным образом? Я должен смотреть на функтоиды?

17
задан jaho 14 June 2012 в 16:27
поделиться