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