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日

悬赏问题

  • ¥15 有没有可以帮我搞一个微信建群链接,包括群名称和群资料群头像那种,不会让你白忙
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题