это указатель на функцию, возвращающую значение double с параметром указателя типа, равным double, если вы исправите объявление переменной, поскольку в его нынешнем виде просто неправильный правильный синтаксис будет double (*foo) (double*)
, если используется полиморфизмзамените функцию:
struct memory_manager{
void*(*getmem)(size_t);
void(*freemem)(void*);
}mem_man;
void* always_fail(size_t){return 0;}
void* myalloc(size_t s){
void* p=mem_man.get_mem(s);
if(p) return p;
mem_man.getmem=always_fail;
return 0;
}
void myfree(void* p){
if(p) freemem(p);
}
на самом деле это не c ++ - способ, которым я geuss, поскольку для большинства целей наследование и виртуальные функции предлагают лучшее решение, но если вы ограничены в c, то вы можете использовать этоТехника для моделирования виртуальных функций.