//Customer个结构体,里面有个time元素
QVector<Customer*> mItems;
QVector<Customer*> mItemsHistory;
//更新前打印出当前mItemsHistory中的time
for (int i = 0; i < mItemsHistory.size(); ++i)
{
qDebug()<<"update前每个mItemsHistory的时间:"<<(mItemsHistory.at(i))->time;
}
//更新,主要是往mItemsHistory里加东西
for (int i = 0; i < mItems.size(); ++i)
{
QString tempTime =(mItems.at(i))->time;
(mItems.at(i))->time=currentTime;
DeleteFromDb(tempTime);
InsertToDb(mItems.at(i));
mItemsHistory.append(mItems.at(i));//在这里往mItemsHistory添加
InsertToDbHistoryTable(mItems.at(i));
}
//更新后打印出当前mItemsHistory中的time
for (int i = 0; i < mItemsHistory.size(); ++i)
{
qDebug()<<"update后每个mItemsHistory的时间:"<<(mItemsHistory.at(i))->time;
}
update前每个mItemsHistory的时间: "2022.03.24"
update前每个mItemsHistory的时间: "2022.03.24"
update前每个mItemsHistory的时间: "2022.03.24"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
理论结果应该是
update前每个mItemsHistory的时间: "2022.03.24"
update前每个mItemsHistory的时间: "2022.03.24"
update前每个mItemsHistory的时间: "2022.03.24"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
update后每个mItemsHistory的时间: "2022.03.25"
但是不知道为什么把之前的mItemsHistory也修改了!
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
没太看懂你的问题,是mItemsHistory中元素个数没对吗?