error C2248: CObject::CObject 无法访问 private成员(在“CObject”类中声明)

>>===问题来源===<<

MFC的OnShowWindow()中,在UI线程中通过封闭函数调用Work线程查数据,函数后继续在UI线程中将查到的数据插入到CCkechListBox。CCheckListBox对应的变量在封闭函数中不可直接调用,提示:“封闭函数局部变量不能在lambda体中引用,除非位于捕获列表中。”将变量加入到封闭函数获取外部变量的中后,报错error C2248: CObject::CObject 无法访问 private成员(在“CObject”类中声明)。

其中,将变量加入到封闭函数的形式为:

void (*function)(CCheckListBox)=[](CCheckListBox 变量)

{...};

auto 调用UI/Work函数头...<void(*)(CCheckListBox),CCheckListBox>::Create(function,变量)

 

>>===问题解决===<<

终于在网上查到,CObject类以及继承自它的所有MFC控件类,应该都是不能够复制的,这里用到的CCheckListBox也是,应该将变量参数改为引用(&)或者指针(*)。

后改为下面的情况,即解决:

void (*function)(CCheckListBox&)=[](CCheckListBox &变量)

{...};

auto 调用UI/Work函数头...<void(*)(CCheckListBox&),CCheckListBox&>::Create(function,变量)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值