Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 修改作为指针传递的QVector的QVector_Qt_Qvector - Fatal编程技术网

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

Qt 修改作为指针传递的QVector的QVector,qt,qvector,Qt,Qvector,函数的参数中有一个变量,定义如下: QVector< QVector<qreal> > *var; 但是,这不会编译,因为 错误:'*(var+((长无符号整数)((长无符号整数)行)*8ul))->QVector::operator[]中的'operator*'不匹配,T=QVector' 如何正确引用该值以便对其进行修改?(想法是函数中传递的参数确实被修改了。)您需要将*var放在括号中: (*var)[i][j] = some_value; 但是为什么要使用指向

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

QVector< QVector<qreal> > *var;
但是,这不会编译,因为

错误:'*(var+((长无符号整数)((长无符号整数)行)*8ul))->QVector::operator[]中的'operator*'不匹配,T=QVector'


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

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

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

但是为什么要使用指向
QVector
的指针?由于
QVector
是Qt的通用容器系列的一部分,因此它使用隐式共享。这意味着如果按值传递,则只会执行浅层复制,也就是说,实际上只传递数据结构的薄簿记部分—指向其他地方存在的更大数据块的指针。

我不知道这一点。我想要避免的是复制整个结构,并且在返回时必须再次复制整个结构。如果我通过值传递,那么整个复制没有完成?非常感谢。不,通过值传递仅复制
QVector
的“簿记”数据(在Windows上有五个
int
s和一个
long
,而不管
QVector
的内容类型或包含多少项)。有关更多信息,请参见:)非常感谢!我将更改它,因为我更喜欢非指针方法
(*var)[i][j] = some_value;