如何删除对象表单Qlist
.
它抛出错误 C:\ Qt \ Qt5.7.0 \ 5.7 \ mingw53_32 \ include \ QtCore \ qlist.h:972:错误:'operator =='不匹配(操作数类型为'CascadeJobInfo'和'const CascadeJobInfo') if(n-> t()== t) ^
答案 0 :(得分:2)
您需要为operator==
类型实施CascadeJobInfo
:
class CascadeJobInfo
{
public:
<...>
bool operator==(const CascadeJobInfo & other) const;
<...>
};
bool CascadeJobInfo::operator==(const CascadeJobInfo & other) const
{
if (this == &other) {
return true;
}
bool equal = <...compare each data member within this object with its counterpart in other...>;
return equal;
}
official documentation说得很清楚:
此函数需要值类型具有实现 运算符==()。
此外,您还不清楚要从代码段中实现的目标。在迭代列表时尝试删除每个列表的项目有一个更简单的替代方法:方法clear()。
答案 1 :(得分:1)
您不是在询问如何从列表中删除“ ”对象,而是如何删除所有对象。使用clear()
:
m_InternJobInfoList.clear();
如果您询问如何仅删除某些谓词为真的对象,则需要使用erase
代替:
auto & list = m_InternJobInfoList;
auto const pred = [](const CascadeJobInfo &){ return true; };
list.erase(std::remove_if(list.begin(), list.end(), pred), list.end());
当然pred
可以做更有用的事情。
在future C++和Qt中,希望您能够完成
erase_if(list, pred);