Изменение QVector QVectors, переданного в качестве указателя - PullRequest
2 голосов
/ 18 ноября 2011

У меня есть переменная в аргументе функции, которая определена так:

QVector< QVector<qreal> > *var;

В определенной точке кода я хочу сделать это:

*var[i][j] = some_value.

Однако это не компилируется, потому что

ошибка: нет совпадения для 'operator *' в '* (var + ((long unsigned int) (((long unsigned int) row)) * 8ul)))-> QVector :: operator [] с T = QVector '

Как правильно ссылаться на значение, чтобы оно было изменено?(Идея состоит в том, что параметр, переданный в функцию, действительно изменен.)

1 Ответ

4 голосов
/ 18 ноября 2011

Вам нужно поставить *var в скобках:

(*var)[i][j] = some_value;

Хотя почему вы используете указатель на QVector? Поскольку QVector является частью общего семейства контейнеров Qt, он использует неявное совместное использование. Это означает, что если вместо этого вы передадите по значению, вы будете выполнять только поверхностное копирование, то есть фактически будете передавать только тонкую учетную часть структуры данных - указатель на блок большего размера. данных, которые существуют в другом месте.

...