Как правильно передавать функцию как параметр C

void App::setup() {
  bt_rest.function("startManufacturing", startManufacturing);
}

int App::startManufacturing(String command) {
...
return 1;
}

bt_rest.function принимает (char * function_name, int (*f)(String)),

Но компилятор выдает invalid use of non-static member function на bt_rest.function("startManufacturing", startManufacturing);

Что делать?

С вообще интересный язык программирования, так что я нашёл как минимум 4 варианта решения данной проблемы:

1. Передавать в аргумент указатель на метод App:

Rest::function(char * function_name, int (App: f)(String), App