如何修改QSet的元素?

art*_*oon 3 c++ qt qset

我已经QSet<QuadPattern> texture;想要循环修改所有QuadPattern。

foreach 这不是一个好的解决方案,因为它会复制。

使用此代码:

QMutableSetIterator<QuadPattern>  it(texture);
while (it.hasNext())
{
    it.next();
    it.value().setCoordinate(...));
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:

error: C2662: 'QuadPattern::setCoordinate' : cannot convert 'this' pointer from 'const QuadPattern' to 'QuadPattern &'
Conversion loses qualifiers
Run Code Online (Sandbox Code Playgroud)

函数setCoordinate是这样的:

内联void setCoordinate(const std :: pair&value){_coordinate = value; }

为什么会出现这个错误?

vah*_*cho 5

错误是因为您尝试修改函数返回的const对象QMutableSetIterator::value()

我相信您无法通过这种方式修改您的商品集,因此没有此类API。修改所有项目所需要的只是清除集合并再次插入新项目。