C++ 返回函数指针的函数指针
我想声明一个类型为pointer to function的变量,返回指向函数的指针。基本上是以下功能,但没有任何C++ 返回函数指针的函数指针,c++,function-pointers,C++,Function Pointers,我想声明一个类型为pointer to function的变量,返回指向函数的指针。基本上是以下功能,但没有任何typedefs: typedef void (*func)(); typedef func (*funky_func)(); funky_func ptr; 我尝试了以下方法 (void (*)()) (*ptr)(); 但它给出了一个“未声明的标识符”——ptr的错误(可能是由于完全不同的解析)。不精通解析C++的复杂,我想知道这是不是可能的,如果是的话,怎么做。 < P>(
typedef
s:
typedef void (*func)();
typedef func (*funky_func)();
funky_func ptr;
我尝试了以下方法
(void (*)()) (*ptr)();
但它给出了一个“未声明的标识符”——ptr的错误(可能是由于完全不同的解析)。不精通解析C++的复杂,我想知道这是不是可能的,如果是的话,怎么做。
< P>(请考虑这是一个完全人为的场景,出于好奇,没有任何实际的理由。我完全知道,在实践中,代码< TyPufFS是使用此处的方法,如果使用函数指针。)< /P> < P> >您可以查看<代码>信号()/<代码>,这是一个使用<代码>空隙(*)()的函数。并返回其中一个。变量
ptr
可以这样声明:
void (*(*ptr)())()
这个符号有点笨拙,而且明显是由内而外的。使用尾部返回类型可能更容易:
auto (*ptr)() -> void (*)()
。。。当然,也可以一直使用尾部返回类型:
auto (*ptr)() -> auto (*)() -> void
C(和C++)声明的一般规则是:如果将声明作为表达式键入,它将具有声明的类型
所以,您需要一个指向函数的指针,它返回指向返回void的函数的指针
假设我们有这样一个指针,ptr
。如何从中获得void
ptr
,获取函数返回指针,指向返回void的函数:*ptr
(*ptr)(
*(*ptr)(
(*(*ptr)()()(
void (*(*ptr)())();
另外,我知道其他人在这段时间内已经回答了(我已经投了更高的票)。但是我想展示到达声明表单的通用过程。啊,非常感谢,这是一个很好的跟踪返回类型的用例。
我想展示到达声明表单的通用过程。
——这是一个很好的方法,我可以很快从您的答案中领会。谢谢