将向量的地址传递给类的构造函数以在类

时间:2017-06-13 14:02:10

标签: c++ qt vector constructor

我试图通过在动态分配期间将地址传递给类的构造函数,将处理后的数据从类的成员函数追加到向量中。为了将数据附加到构造函数中传递的向量;指向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()崩溃。是什么原因?我该如何解决这个问题?有没有更好的方法来解决我想要实现的目标?

1 个答案:

答案 0 :(得分:0)

正如@lepsch所说。 QVector<QByteArray> readDataVec因为它在for循环块内而超出范围。因此,解决方案是将QVector<QByteArray> readDataVec作为类MainWindow的成员,并将地址传递给DataExtractor的conbstructor。