QList ::包含QSharedPointer

时间:2015-10-16 06:52:32

标签: c++ qt qlist qsharedpointer

所以我有一个具有id数据成员的类,我在QList<QSharedPointer<MyClass>>中使用它,我不确定如何检查是否存在{{1}中的现有id }}。如何完全按照QList QList::contains而不是QSharedPointer<MyClass>&

进行操作

我应该只使用一个使用id作为密钥的QHash吗?

1 个答案:

答案 0 :(得分:1)

QList::contains算法基于== operator。正如Qt文档中所述,如果两个托管原始指针的值具有相同的值,== operator的{​​{1}}将返回QSharedPointer

此外,如果您在true中使用了原始指针,那么它将无效,因为您无法覆盖原始指针的QList(您在列表中有指向== operator的指针对象因此不会调用MyObject的重载==

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