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,变量)

猜你喜欢

转载自blog.csdn.net/weixin_39720027/article/details/81240445