Qt 6.12 LTS is out! See what's new in the release
blog
Template's object does not call constructor when resizing qvector
-
QVector<cStandard_MeasureData*> m_Result; class cStandard_MeasureData { private: QList<float>* m_lWave; QList<float>* m_lBase1; QList<float>* m_lBase2; QList<float>* m_lDerivate; public: cStandard_MeasureData(); ~cStandard_MeasureData(); QList<float>* GetWave() { return m_lWave; }; QList<float>* GetBase1() { return m_lBase1; }; QList<float>* GetBase2() { return m_lBase2; }; QList<float>* GetDerivate() { return m_lDerivate; }; }; cStandard_MeasureData::cStandard_MeasureData() { m_lWave = new QList<float>(); m_lBase1 = new QList<float>(); m_lBase2 = new QList<float>(); m_lDerivate = new QList<float>(); }; cStandard_MeasureData::~cStandard_MeasureData() { delete m_lWave; delete m_lBase1; delete m_lBase2; delete m_lDerivate; };After clear() the variable of m_Result, resize(8) is called. When resize is called, cStandard_MeasureData() constructor should be called, but it is not called.
-
QVector<cStandard_MeasureData*> m_Result; class cStandard_MeasureData { private: QList<float>* m_lWave; QList<float>* m_lBase1; QList<float>* m_lBase2; QList<float>* m_lDerivate; public: cStandard_MeasureData(); ~cStandard_MeasureData(); QList<float>* GetWave() { return m_lWave; }; QList<float>* GetBase1() { return m_lBase1; }; QList<float>* GetBase2() { return m_lBase2; }; QList<float>* GetDerivate() { return m_lDerivate; }; }; cStandard_MeasureData::cStandard_MeasureData() { m_lWave = new QList<float>(); m_lBase1 = new QList<float>(); m_lBase2 = new QList<float>(); m_lDerivate = new QList<float>(); }; cStandard_MeasureData::~cStandard_MeasureData() { delete m_lWave; delete m_lBase1; delete m_lBase2; delete m_lDerivate; };After clear() the variable of m_Result, resize(8) is called. When resize is called, cStandard_MeasureData() constructor should be called, but it is not called.
@IknowQT said in Template's object does not call constructor when resizing qvector:
When resize is called, cStandard_MeasureData() constructor should be called
Why should it be called?
Your m_Result contains pointers to cStandard_MeasureData, not cStandard_MeasureData.