C++如何定义一个以自身类型为形参类型的函数?

我希望这样:

typedef void (*TYPE)(TYPE);
void F(TYPE x){
}

但是这会在typedef报错,说第二个TYPE未定义。
我该怎么做,才能让F的参数类型与F本身的类型相同?

你这个逻辑上不通啊。void F(TYPE x),怎么调用呢?参数是个函数,这个函数参数又是个函数,然后这个函数参数又要求是一个函数
来一段代码,你看看能不能用。不能用TYPE直接定义,但可以用void *替代。


int a = 0;
typedef void (*TYPE)(void* p);

void fun(void*  p)
{
    a++;
    if(p != NULL)
    {
        printf("HELLO_%d\n",a);
        TYPE k = *(TYPE*)p;
        if(a < 10)
        {
            TYPE q = fun;
            k(&q);
        }
        else
            k(NULL);

    }
    else
        printf("HELLO_%d\n",a);
}
int main()
{
    TYPE k = fun;
    TYPE m = fun;
    m(&k);
}

我觉得不可能,等一手大佬回答

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632