AX0101_4413 2022-04-26 16:05 采纳率: 95.7%
浏览 50
已结题

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

我希望这样:

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

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

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-04-26 16:23
    关注

    你这个逻辑上不通啊。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);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月26日