在没有typedef的情况下在C ++中返回函数指针时出错

时间:2013-07-28 19:50:14

标签: c++ return function-pointers

我试图在不使用typedef的情况下返回指向函数的指针,但是编译器(gcc)发出了一个奇怪的错误,好像我无法进行那种设置。

备注:使用typedef代码可以工作。

代码:

void catch_and_return(void (*pf)(char*, char*, int&), char *name_one, char* name_two, int& number)(char*, char *, int&)
{
    pf(name_one, name_two, number);

    return pf;
}

错误:

'catch_and_return'声明为函数返回函数

你能解释一下为什么编译器不允许我这样做吗?谢谢!

1 个答案:

答案 0 :(得分:7)

将您的函数声明如下:

void (*catch_and_return(void (*pf)(char*, char*, int&), char *name_one, char* name_two, int& number))(char*, char *, int&)
{
    pf(name_one, name_two, number);

    return pf;
}

返回函数的函数的语法是:

return-function-return-type (* function-name parameter-list ))( function-to-返回参数列表

注意:乍一看这个声明很麻烦,只要有可能就使用typedef