Funktion eine Funktion mit Argumenten geben?

3 Antworten

Mir ist nicht ganz klar was Du wo wem wie übergeben willst (wo Du also scheiterst). Du kannst den Parameter bei AddWorker (Funktionszeiger) natürlich ganz gewöhnlich typsiieren und entsprechend muß dann eben eine Funktion mit dem korrekten Prototyp übergeben werden.

eine andere Funktion geben muss

Und was ist deren Signatur? Wenn die fix ist, kannst Du doch einfach die passenden Parameter deklarieren, z.B.

void addWork ( void(*func)(int,int), int, int )

Und wenn es allgemein sein soll, brauchst Du eben ein Template mit Parameter Pack. Das funktioniert genau so wie bei std::async:

template< class Func, class... Args >
void addWork ( Func func, Args args )

Lösung:

template<typename... _args, typename _func>

inline void createThread(_func&& func, _args&&... args)

{

   std::thread(func, args...).detach();

}

Woher ich das weiß:eigene Erfahrung