从'const QVector <qvector <qreal >>'转换为'QVector <qvector <qreal >>

时间:2018-09-27 06:07:16

标签: c++ casting const-cast qvector qdatastream

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

我尝试了一些步骤,但没有帮助:

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

abc.points是QVector<QVector<qreal>>类型的结构元素,我正尝试从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;
}

2 个答案:

答案 0 :(得分:2)

<<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;
}

答案 1 :(得分:0)

做到了 QVector<QVector<qreal>> points(abc.points);

请建议是否还有其他方法。