2
我有是這樣定義的函數的參數變量的QVector:修改爲指針傳遞QVectors
QVector< QVector<qreal> > *var;
在代碼的某一點上,我想這樣做:
*var[i][j] = some_value.
然而,這並不編譯,因爲
error: no match for ‘operator*’ in ‘*(var + ((long unsigned int)(((long unsigned int)row) * 8ul)))->QVector::operator[] with T = QVector’
如何正確地引用值,以便爲m odified? (我們的想法是,在函數傳遞參數真的修改。)
我不知道。我想避免的是複製整個結構,並且在返回時不得不復制整個結構。如果我通過價值,那麼整個副本沒有完成?謝謝! – aarelovich
沒有,只有數值傳遞纔會複製'QVector'的'簿記'數據(無論QVector的內容類型或它包含多少項目),Windows上有5個int和1個long。有關更多信息,請參閱[隱式共享的Qt文檔](http://doc.qt.nokia.com/stable/implicit-sharing.html)。 – sjwarner
非常感謝!我會改變它,因爲我更喜歡非指針方法 – aarelovich