QVector附加崩溃

时间:2017-09-18 19:50:29

标签: c++ qt

我有一个带有qt的数据跟踪程序,该程序从gui获取信息并将其附加到保存数据的类中。我没有使用QVector2d,因为似乎没有任何.append方法,我搜索了qt的帮助论坛和文档。我必须使用QObject,因为我将序列化信息。数据存储在嵌套的QVector中,如此 QVector< QVector<qint8> > log_matrix;

出于某种原因,当我将QVector<qint8>附加到嵌套QVector< QVector<qint8>>时程序崩溃,我得不到有用的调试信息。 我已经尝试过这个作为标题中数据类的方法:

void insert_new_log(QVector<qint8> new_log)
{
    this->log_matrix.append(new_log);
}

并在main.cpp文件中尝试过这个

QVector<qint8> my_data;
//initialize data
my_class->my_data_matrix.append(my_data);

我是否滥用了追加方法?还有另一种方法可以使用追加方法吗?

1 个答案:

答案 0 :(得分:0)

您似乎忘记了方法定义中的类名。无论如何,你的方法应该有效。

void ClassName::insert_new_log(QVector<qint8> new_log)
{
    this->log_matrix.append(new_log);
}

您的第二个示例未使用任何数据初始化my_data。虽然它肯定会起作用,但从外部访问一个类的公共成员传统上是不好的形式。我建议使用getter / setter。为了便于说明,我使用了this而不是my_class

如果您愿意,也可以使用追加运算符<<来调用append方法。

QVector< QVector<qint8> > log_matrix;
QVector<qint8> my_data;

my_data<<1;
this->my_data_matrix<<(my_data);