2016-05-26 5 views
0

Мне интересно, как я могу удалить объект из списка C++? Я пытаюсь создать программное обеспечение для управления книгой, и я хотел бы иметь функцию в базе данных (которая это список), который удаляет из него книгу, которая является переданным объектом. Я думал об этом решении, но это не сработает - похоже, что оператор == неправильно перегружен? Или, может быть, это решение не сработает?Удаление объекта из std :: list

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

У вас есть функция, которая может сравнивать две книги, чтобы узнать, равны ли они? – NathanOliver

+1

Показать код 'Книги'. Вы перегрузили 'operator ==' за то же самое? – CinCout

+1

Как перегрузить 'operator ==' https://stackoverflow.com/questions/4421706/operator-overloading – CoryKramer

ответ

1

Или, возможно, это решение не будет работать?

Это решение должно работать до тех пор, пока Book объектов сопоставимы с operator==.

но это не сработает - похоже, что оператор == неправильно перегружен?

Если оператор неправильно перегружен, это может быть проблемой. Вы должны исследовать более подробно , так как не работает. Это даст вам представление о , почему не работает, что приведет вас к решению.

0

My == перегрузка была неправильной, поэтому я исправил ее и, похоже, сейчас работает. Это мой код класса Книги:

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; 
} 
}; 
Смежные вопросы