QList::contains 使用 QSharedPointer
QList::contains with a QSharedPointer
所以我有一个 class,它有一个 id 数据成员,我在 QList<QSharedPointer<MyClass>>
中使用它,我不确定如何检查是否有一个现有的那个 QList
中的 ID。我将如何去做,因为 QList::contains
需要 QSharedPointer<MyClass>&
而不是 MyClass*
我应该只使用一个使用 id 作为键的 QHash 吗?
QList::contains
算法基于== operator
。如 Qt 文档中所述,如果两个托管原始指针的值具有相同的值,则 == operator
of QSharedPointer
returns true
。
此外,如果您在 QList
中使用了原始指针,它将无法工作,因为您无法覆盖原始指针的 == operator
(您有指向 MyObject
的指针不列出对象,因此不会调用 MyObject
的重载 ==
。
唯一的解决方案是手动迭代列表并使用 for 循环检查是否相等。
所以我有一个 class,它有一个 id 数据成员,我在 QList<QSharedPointer<MyClass>>
中使用它,我不确定如何检查是否有一个现有的那个 QList
中的 ID。我将如何去做,因为 QList::contains
需要 QSharedPointer<MyClass>&
而不是 MyClass*
我应该只使用一个使用 id 作为键的 QHash 吗?
QList::contains
算法基于== operator
。如 Qt 文档中所述,如果两个托管原始指针的值具有相同的值,则 == operator
of QSharedPointer
returns true
。
此外,如果您在 QList
中使用了原始指针,它将无法工作,因为您无法覆盖原始指针的 == operator
(您有指向 MyObject
的指针不列出对象,因此不会调用 MyObject
的重载 ==
。
唯一的解决方案是手动迭代列表并使用 for 循环检查是否相等。