【发布时间】:2013-07-28 13:02:01
【问题描述】:
我试图在不使用 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' 声明为函数返回函数
你能解释一下为什么编译器不允许我这样做吗?谢谢!
【问题讨论】:
-
你能显示typedef代码吗?这将使您更容易理解您正在尝试做什么。
-
这应该是
void (*catch_and_return(void (*pf)(char*, char*, int&), char *name_one, char* name_two, int& number))(char*, char *, int&)查看this question 上的答案以获取一些示例。 -
为了您的理智,std::function
-
谢谢你们!问题解决了。 Carl Norum,typedef 代码为:typedef void (pf)(char, char*, int&); pf catch_and_return(pf a, char *name_one, char *name_two, int& number) { a(name_one, name_two, number);返回一个; }
-
完全有效的问题,不应该得到减分。最佳实践和理论“实践”问题是两个不同的东西。
标签: c++ return function-pointers