1

私はこの問題に夢中です。

私はこの自己定義の構造体を持っています

struct oneRectangle
{
    QString partName;
    QGraphicsRectItem * rectangle;
};

そして、この構造体をテンプレートとして使用するリストがあります。

QList<oneRectangle> partList;

構造体のエンティティを追加した後 (ポインターを初期化せずに)、次のようにする必要があります。

partList.at(index).rectangle = some pointer points to a QGraphicsRectItem

しかし、構造体が読み取り専用の構造体であるというエラーが発生しました。最初にポインターを malloc してからリストに追加しようとしましたが、アドレスをポインターに割り当てると、まだエラーが発生します。ここで何が問題なのですか?

4

2 に答える 2

13

変化する

partList.at(index).rectangle

の中へ

partList[index].rectangle

asQList::operator[](int)は変更可能な参照を返し、 whereQList::at(int)は const 参照を返します (したがって、変更可能ではありません)。

于 2012-07-30T12:49:19.133 に答える
0

全体のポイントは次のとおりです。表示には something.at(index) を使用し、編集には something[index] を使用します。両方にsomething[]を使用しないのはなぜですか? 「.at()」の方が効率的で高速であることをどこかで読んだことがあります。私はそれをテストしませんでしたが...

于 2012-08-02T13:09:16.247 に答える