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日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)