我在函数的参数中有一个变量,定义如下:
QVector< QVector<qreal> > *var;
在代码的某一点上,我想这样做:
*var[i][j] = some_value.
但是这不会编译,因为
错误:'*(var +((long unsigned int)(((long unsigned int)row)* 8ul))中的'operator *'不匹配 - >&gt; QVector :: operator [],T = QVector'
如何正确引用该值以便对其进行修改? (这个想法是真正修改了函数中传递的参数。)
答案 0 :(得分:4)
您需要将*var
放在括号中:
(*var)[i][j] = some_value;
虽然你为什么要使用指向QVector
的指针?由于QVector
是Qt通用容器系列的一部分,因此它使用隐式共享。这意味着如果你改为按值传递,你只会执行一个浅拷贝,也就是说你实际上只会传递数据结构的薄书保存部分 - 一个指向更大块的指针其他地方存在的数据。