修改作为指针传递的QVectors的QVector

时间:2011-11-18 11:57:30

标签: qt qvector

我在函数的参数中有一个变量,定义如下:

QVector< QVector<qreal> > *var;

在代码的某一点上,我想这样做:

*var[i][j] = some_value.

但是这不会编译,因为

  

错误:'*(var +((long unsigned int)(((long unsigned int)row)* 8ul))中的'operator *'不匹配 - >&gt; QVector :: operator [],T = QVector'

如何正确引用该值以便对其进行修改? (这个想法是真正修改了函数中传递的参数。)

1 个答案:

答案 0 :(得分:4)

您需要将*var放在括号中:

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

虽然你为什么要使用指向QVector的指针?由于QVector是Qt通用容器系列的一部分,因此它使用隐式共享。这意味着如果你改为按值传递,你只会执行一个浅拷贝,也就是说你实际上只会传递数据结构的薄书保存部分 - 一个指向更大块的指针其他地方存在的数据。