将指针作为参数传递给函数

use*_*913 2 c++ pointers

我有以下代码:

#include<iostream>
using namespace std;

typedef void (*HandlerFunc)(int, int);
HandlerFunc  mr;
HandlerFunc mm()
{
    return mr;
}

void sample(int a, int b, HandlerFunc func)
{
}

void main()
{
     sample(1, 2, mm);
}
Run Code Online (Sandbox Code Playgroud)

这里我试图将类型的函数传递HandlerFunc给另一个函数,但是我收到一个错误:

错误:*:无法将参数3转换'void (__cdecl *(void))(int,int)''void (__cdecl *)(int,int)'

如果我输入演员,因为sample(1, 2, (HandlerFunc)mm);一切正常.
任何人都可以告诉解决错误问题的方法是什么?

Alo*_*ave 5

HandlerFunc mm()
{...}
Run Code Online (Sandbox Code Playgroud)

应该:

void mm(int, int)
{...}
Run Code Online (Sandbox Code Playgroud)

你的函数sample()将一个指向函数的指针(typedef作为HandlerFunc)作为最后一个参数.作为此参数传递的函数的地址必须与作为指针的函数的类型相匹配.