【问题标题】:Error in return a function pointer in C++ without typedef在没有 typedef 的 C++ 中返回函数指针时出错
【发布时间】: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


【解决方案1】:

如下声明你的函数:

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;
}

返回函数的函数语法是:

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

注意:这个声明乍一看可能很麻烦,尽可能使用typedef

【讨论】:

  • 谢谢你,是的,我只是想知道没有typedef
  • 作为参数的函数类型到哪里去了?
  • 函数名前(用括号括起来):type (*function-name)(parameters)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多