我正在尝试编写一个返回函数指针的函数。这是我的最小示例:
void (*myfn)(int)() // Doesn't work: supposed to be a function called myfn
{ // that returns a pointer to a function returning void
} // and taking an int argument.
当我使用
g++ myfn.cpp
进行编译时,它会显示以下错误:myfn.cpp:1:19: error: ‘myfn’ declared as function returning a function
myfn.cpp:1:19: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
这是否意味着不允许我返回函数指针?
最佳答案
您可以返回函数指针,并且正确的语法如下所示:
void (*myfn())(int)
{
}
完整的例子:
#include <cstdio>
void retfn(int) {
printf( "retfn\n" );
}
void (*callfn())(int) {
printf( "callfn\n" );
return retfn;
}
int main() {
callfn()(1); // Get back retfn and call it immediately
}
哪个像这样编译和运行:
$ g++ myfn.cpp && ./a.out
callfn
retfn
如果有人能很好地解释为什么g++的错误消息表明无法实现,那么我很想听听。
关于c++ - 将 "error: ’ myfn声明为“返回函数的函数”是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18773359/