yellow_doge 2021-12-30 17:04 采纳率: 57.1%
浏览 32
已结题

一个非常奇怪的问题,关于typedef如何定义类内函数成员的问题(语言-c++)

问题遇到的现象和发生背景

我在类中有个函数

img


就是这个bool bWorkdo()函数;

img

但现在存在一个问题,就很难解决,我查阅了很多资料都无法解决:
在下面这个类内函数中:

img


其中有一行代码使用到了不Workdo:

img


没错,就是这个地方,他会报错,原因我也很清楚,但我不知道如何解决,听我细细说来。

img

原因很简单,就是这个标出来的SPCM_WORK_DO指针的定义与我现在这个bWorkdo函数不符:

img


他的定义是这样:

img

这个错误是自从我把bWorkdo函数,写到类内之后才出现的,也就是因为函数在类内,导致实参与形参不一致出错了。
但是我又必须得把bWorkdo函数写在类里面,因为我想用qt的信号与槽来传递这个函数类生成的数据。
如果你是告诉我加个 static 在 bWorkdo函数声明前这样的解决方案,那会导致信号与槽无法正常使用。
我就想着有没有typedef那行代码是上改一改,让形参SPCM_WORK_DO能变得跟实参结构一样呢?

有请各位能手解答下我的问题吧

  • 写回答

3条回答 默认 最新

  • 关注

    问题的原因在于:
    回调函数中使用的函数必须是能直接调用的,但是如果把这个Workdo函数放在类中,只能在类实例化后才能调用Workdo(排除加static的情况),这是导致报错的根本原因。
    解决的思路:
    如果这个Workdo函数处理的数据跟类没关系,那么就把它作为一个普通函数,如果需要用信号槽,就另外写一个槽函数,然后在槽函数中调用Workdo函数就可以了。
    如果Workdo函数处理的数据,用到了类内的数据,那基本没办法了。(可以考虑把用到的类的数据声明成static的,然后Workdo也是普通函数,然后重写一个槽函数调用Workdo,只能试一下,不一定能成功)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 12月30日

悬赏问题

  • ¥150 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装