Próbuję znaleźć sposób, w jaki sposób można przypisać wskaźnik funkcji do funkcji o różnej liczbie argumentów.C++: Wskaźnik funkcji do funkcji ze zmienną liczbą argumentów
Mam pętlę while, która przyjmuje wiele różnych funkcji jako instrukcję warunkową, więc zamiast pisać wiele pętli while z dokładnie tym samym kodem w środku, chciałbym mieć jeden ze wskaźnikiem funkcji. Wszystkie funkcje mają format bool f(...)
. Myślę, że jakiś kod najlepiej ilustruje, co mam na myśli:
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)())
{ ... }
To oczywiście nie działa, ponieważ funkcje mają różne podpisy. Czy to w ogóle możliwe, aby działał w podobny sposób? Czy funktoidy są czymś, na co powinienem patrzeć?
Skąd wiesz, jak zastosować ten wskaźnik funkcji, jeśli nie wiesz, ile argumentów potrzeba? – mfontanini
Zauważ, że twoja składnia przypisania do wskaźnika funkcji jest w każdym razie niepoprawna, wywołujesz * funkcje, przyjmujesz wynik, dostajesz wskaźnik do jego tymczasowego przechowywania i przypisujesz * to * do wskaźnika funkcji, który zadeklarowałeś wcześniej. –
Tak, wiem, że nie jest to poprawna składnia. Po prostu pokazuje ten pomysł. – jaho