从std :: list中删除对象

时间:2016-05-26 11:38:02

标签: c++ list

我想知道如何从C ++列表中删除对象 - 我试图创建一个图书管理软件,我想在数据库中有一个功能(这是一个list)从中移除一本书,这是一个传递的对象。我正在考虑这个解决方案,但它不会工作 - 似乎==运算符没有正确重载?或者这个解决方案可能不起作用?

class Database
{
    list <Books> mybooks;
public:
    void BookDel(Books & temp)
    {
        mybooks.remove(temp);
    }
}

2 个答案:

答案 0 :(得分:1)

  

或许这个解决方案不起作用?

只要Book个对象与operator==相当,此解决方案就可以使用。

  

但它不起作用 - 好像==运算符没有正确重载?

如果操作员没有正确过载,那肯定是问题所在。你应该更深入地研究 它不起作用。这将使您深入了解为什么它不起作用,这将引导您找到解决方案。

答案 1 :(得分:0)

我的==重载是错误的,所以我纠正了它,它似乎现在正在工作。这是我的Books类代码:

class Book {
    public: bool operator==(const Book & a) const
{
    bool test=false;
    if(!(this->tytul.compare(a.tytul)))
        test=true;
    return test;
}
protected:
list <Autor> authors;
string tytul;
public:
    void AddAuthor(Autor x)
{
    authors.push_back(x);
}
Books(string tytulx)
{
    tytul = tytulx;
}
};