0

所以我有一个类,它有一个 id 数据成员,我在 a 中使用它,QList<QSharedPointer<MyClass>>我不确定如何去检查它是否有一个现有的 id QList。我将如何完全按照QList::contains需要 aQSharedPointer<MyClass>&而不是 aMyClass*

我应该只使用使用 id 作为键的 QHash 吗?

4

1 回答 1

1

QList::contains算法基于== operator. 如 Qt 文档中所述,如果两个托管原始指针的值具有相同的值,则== operatorofQSharedPointer返回。true

此外,如果您在其中使用了原始指针,QList它将无法工作,因为您无法覆盖== operator原始指针的 (您在列表中有指向而不是对象的指针,因此不会调用MyObject重载==的)。MyObject

唯一的解决方案是手动迭代列表并使用 for 循环检查是否相等。

于 2015-10-16T11:05:09.957 回答