конвертировать из 'const QVector'to' QVector' - PullRequest
0 голосов
/ 27 сентября 2018

Как я могу решить следующее, т.е. преобразовать 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 голосов
/ 27 сентября 2018

<< принимает значение 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;
}
0 голосов
/ 27 сентября 2018

Сделано QVector<QVector<qreal>> points(abc.points);

Пожалуйста, предложите, если есть другие подходы.

...