所以我有一个具有id数据成员的类,我在QList<QSharedPointer<MyClass>>
中使用它,我不确定如何检查是否存在{{1}中的现有id }}。如何完全按照QList
QList::contains
而不是QSharedPointer<MyClass>&
我应该只使用一个使用id作为密钥的QHash吗?
答案 0 :(得分:1)
QList::contains
算法基于== operator
。正如Qt文档中所述,如果两个托管原始指针的值具有相同的值,== operator
的{{1}}将返回QSharedPointer
。
此外,如果您在true
中使用了原始指针,那么它将无效,因为您无法覆盖原始指针的QList
(您在列表中有指向== operator
的指针对象因此不会调用MyObject
的重载==
。
唯一的解决方案是手动迭代列表并使用for循环检查是否相等。