QSet :: find()迭代器解除引用获取"无法转换'此'指针'错误?

dte*_*ech 2 c++ qt iterator compiler-errors

我在尝试访问迭代器引用时遇到错误:

QSet<UniqueWord>::iterator iter = uniqueWords.find(word);
iter->addOccurrence(position); // this gets an error
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

错误:C2662:'UniqueWord :: addOccurrence':无法将'this'指针从'const UniqueWord'转换为'UniqueWord&'转换失去限定符

我错过了什么?

Stu*_*etz 5

你错过了迭代器的operator->回报const UniqueWord *,所以你要调用addOccurrence一个UniqueWord就是const.

请参阅此处的文档:

http://doc.qt.digia.com/qt/qset-iterator.html

  • 您无法修改它的原因是,如果您以导致其哈希代码更改的方式更改"UniqueCode",则可能会影响该集中的查找.如果你想以你知道不影响其哈希码的方式改变它,你可以使`addOccurrence`成为一个`const`成员函数,并使非键状态变为可变,这样你仍然可以改变它.或者,从集合中删除您找到的元素,然后重新添加它的修改版本. (3认同)