0

我该如何解决以下问题,即转换const QVector<QVector<qreal>>QVector<QVector<qreal>>

我尝试了几个步骤但没有帮助:

QVector<QVector<qreal>> points = const_cast<QVector<QVector<qreal>>>(abc.points);

abc.points 是 type 的结构元素QVector<QVector<qreal>>,我试图从 a 中提取QDataStream

QDataStream& operator >> (QDataStream& in, const CustomPointCloud& abc)
{
    quint32 pointsCount = quint32(abc.pointsCount);
    QVector<QVector<qreal>> points =
        const_cast<QVector<QVector<qreal>>>(abc.points);
    in >> pointsCount >> points;
    return in;
}
4

2 回答 2

2

<<take by const,因为它不修改参数,而整点>>是修改参数。

您应该更改函数定义。您正在将流中的数据读取到在函数结束时不再存在的本地对象中。

QDataStream& operator >> (QDataStream& in, CustomPointCloud& abc)
{
    quint32 pointsCount;
    in >> pointsCount;
    in >> abc.points;
    return in;
}

我还建议您不需要点数来提取流,底层QDataStream& >> (QDataStream&, QVector<T>&)模板会处理这个问题。那么这对运算符将是

QDataStream& operator >> (QDataStream& in, CustomPointCloud& abc)
{
    return in >> abc.points;
}

QDataStream& operator << (QDataStream& out, const CustomPointCloud& abc)
{
    return out << abc.points;
}
于 2018-09-27T08:13:25.957 回答
0

搞定了 QVector<QVector<qreal>> points(abc.points);

请建议是否有其他方法。

于 2018-09-27T06:21:13.253 回答