实在是太菜了,关于QTC++ 结构体和容器的问题
其实以前碰到过这个问题,但没有整理,今天又碰到了,结果又耽误了很长时间。
QT版本:5.7.0
症状是将一个带QString的结构体放入struct中,之后又保存到QMap中,结果在多线程运行时发生了许多莫名其妙的错误。
在运行过程中QThread对象没被销毁。movetothread的object对象也没有被销毁,也增加了线程同步,但数据就是发生了错误。
在考虑是不是线程执行完成后,系统回收了线程运行资源。但QMap确确实实是保存在object里面的啊。没有得到具体的原因。
之后解决思路是:
将放入容器中的元素修改成类并添加拷贝构造函数和赋值构造函数。
猜想是不是struct并不会像类一样有默认的拷贝构造函数,不会调用QString的拷贝构造。