我试图通过在动态分配期间将地址传递给类的构造函数,将处理后的数据从类的成员函数追加到向量中。为了将数据附加到构造函数中传递的向量;指向vector成员的指针获取构造函数参数的地址。然后,此类成员用于附加数据。但这种技术使程序在Qt中崩溃。任何帮助表示赞赏。
void MainWindow::on_goButton_clicked()
{
//This part of the code is removed for clarity
QVector<QByteArray> readDataVec;
for(int i = 0; i < 3; i++)
{
//DataExtractor object is dynamically allocated and the address of avector is passed
DataExtractor *newDataExtractor = new DataExtractor(&readDataVec);
newDataExtractor->setupURL(testAPI);
newDataExtractor->extract();
}
}
DataExtractor的构造函数
DataExtractor::DataExtractor(QVector<QByteArray> *vec)
{
this->dataVec = vec; //dataVec is of type QVector<QByteArray>* member of the class
qDebug() << "Constructor successful";
}
void DataExtractor::readData()
{
this->readDataByteArray = this->reply->readAll();
this->dataVec->push_back(x); //The ptr is used to append the data to the vector
this->~DataExtractor(); //Dynamically allocated object is deleted
}
程序在函数void DataExtractor::readData()
崩溃。是什么原因?我该如何解决这个问题?有没有更好的方法来解决我想要实现的目标?
答案 0 :(得分:0)
正如@lepsch所说。 QVector<QByteArray> readDataVec
因为它在for
循环块内而超出范围。因此,解决方案是将QVector<QByteArray> readDataVec
作为类MainWindow
的成员,并将地址传递给DataExtractor
的conbstructor。