2

次のように定義された関数の引数に変数があります。

QVector< QVector<qreal> > *var;

コードの特定のポイントで、これを実行したいと思います。

*var[i][j] = some_value.

ただし、これはコンパイルされません。

エラー:'*(var +((long unsigned int)(((long unsigned int)row)* 8ul)))-> QVector :: operator [] with T = QVector' </ p>

値を正しく参照して変更するにはどうすればよいですか?(関数で渡されるパラメーターが実際に変更されるという考え方です。)

4

1 に答える 1

4

*varかっこを入れる必要があります:

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

なぜあなたは?へのポインタを使用しているのQVectorですか?はQtの汎用コンテナファミリの一部であるためQVector、暗黙的な共有を使用します。つまり、代わりに値渡しを行う場合は、浅いコピーのみを実行します。つまり、データ構造の薄い簿記部分(より大きなブロックへのポインター)のみを効果的に渡すことになります。他の場所に存在するデータの。

于 2011-11-18T12:13:56.917 に答える