C ++函数指针作为参数

我尝试调用一个函数作为没有参数的函数指针,但我不能让它的工作。

void *disconnectFunc; void D::setDisconnectFunc(void (*func)){ disconnectFunc = func; } void D::disconnected(){ *disconnectFunc; connected = false; } 

正确的方法是:

 typedef void (*callback_function)(void); // type for conciseness callback_function disconnectFunc; // variable to store function pointer type void D::setDisconnectFunc(callback_function pFunc) { disconnectFunc = pFunc; // store } void D::disconnected() { disconnectFunc(); // call connected = false; } 

replacevoid *disconnectFunc;void (*disconnectFunc)(); 声明函数指针typesvariables。 或者更好的使用typedef

 typedef void (*func_t)(); // pointer to function with no args and void return ... func_t fptr; // variable of pointer to function ... void D::setDisconnectFunc( func_t func ) { fptr = func; } void D::disconnected() { fptr(); connected = false; } 

您需要将disconnectFunc声明为函数指针,而不是void指针。 你还需要把它作为一个函数来调用(带圆括号),不需要“*”。