实在是太菜了,关于QTC++ 结构体和容器的问题

其实以前碰到过这个问题,但没有整理,今天又碰到了,结果又耽误了很长时间。

QT版本:5.7.0

症状是将一个带QString的结构体放入struct中,之后又保存到QMap中,结果在多线程运行时发生了许多莫名其妙的错误。

在运行过程中QThread对象没被销毁。movetothread的object对象也没有被销毁,也增加了线程同步,但数据就是发生了错误。

在考虑是不是线程执行完成后,系统回收了线程运行资源。但QMap确确实实是保存在object里面的啊。没有得到具体的原因。

 

之后解决思路是:

 

将放入容器中的元素修改成类并添加拷贝构造函数和赋值构造函数。

猜想是不是struct并不会像类一样有默认的拷贝构造函数,不会调用QString的拷贝构造。

 

posted @ 2017-09-30 10:45  961493347  阅读(1943)  评论(0编辑  收藏  举报