3

QSet<QuadPattern> texture;すべての QuadPattern をループで変更したいと考えています。

foreachコピーを作成するため、良い解決策ではありません。

このコードで:

QMutableSetIterator<QuadPattern>  it(texture);
while (it.hasNext())
{
    it.next();
    it.value().setCoordinate(...));
}

コンパイルエラーが発生します:

error: C2662: 'QuadPattern::setCoordinate' : cannot convert 'this' pointer from 'const QuadPattern' to 'QuadPattern &'
Conversion loses qualifiers

関数setCoordinateは次のようになります。

inline void setCoordinate(const std::pair &value) { _coordinate = 値; }

なぜこのエラーですか?

4

2 に答える 2

6

エラーは、関数によって返されたconstオブジェクトを変更しようとしたためですQMutableSetIterator::value()

セットのアイテムをそのように変更することはできないと思うので、そのような API はありません。すべてのアイテムを変更するために必要なのは、セットをクリアして新しいアイテムを再度挿入することだけです。

于 2014-06-27T09:22:11.987 に答える