void My3DBars::ResetTemperatureData()
{
std::shared_ptr<QBarDataArray> dateArray;
std::shared_ptr<QBarDataRow> dataRow;
dateArray = std::make_shared<QBarDataArray>();
dateArray->reserve(m_Ylist.size());
for (int Y = 0; Y < m_Ylist.size(); ++Y)
{
dataRow = std::make_shared<QBarDataRow>(m_Xlist.size());
for (int X = 0; X < m_Xlist.size(); ++X)
{
(*dataRow)[X].setValue(m_ZData[Y][X]);
}
dateArray->append(dataRow.get());
}
m_PrimarySeries->dataProxy()->resetArray(dateArray.get(), m_Ylist, m_Xlist);
}
如以上代码,m_PrimarySeries对象需要在后续用上智能指针dateArray内包含的指针,
该指针会在智能指针超出函数范围后进行销毁,导致后续指针变成野指针,导致程序闪退。