Как превратить void() в void (**)()?
Запишите указатель в переменную и отдайте адресс этой переменной.
Примерно так.
#include <iostream>

void bar(int n) {
    std::cout << (n*n) << std::endl;
}

void foo(void(**ptr)(int)) {
    (*ptr)(4);
    (*ptr)(40);
}

int main () {
    void(*c)(int);
    c = bar;
    foo(&c);
}

https://godbolt.org/z/heaWxPP7j
Запишите указатель в переменную и отдайте адресс этой переменной.
Примерно так.
#include <iostream>

void bar(int n) {
    std::cout << (n*n) << std::endl;
}

void foo(void(**ptr)(int)) {
    (*ptr)(4);
    (*ptr)(40);
}

int main () {
    void(*c)(int);
    c = bar;
    foo(&c);
}

https://godbolt.org/z/heaWxPP7j