Я пытаюсь понять, как можно присвоить указатель функции функциям с разным количеством аргументов.
У меня есть цикл 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)())
{ ... }
Очевидно, что это не работает, потому что функции имеют разные сигнатуры. Можно ли вообще заставить его работать подобным образом? Я должен смотреть на функтоиды?