У меня есть QList, и я пытаюсь заменить объекты в списке новыми объектами. Контекст заключается в том, что у меня есть список пользовательских объектов (имя класса «Разговор») для представления списка групповых чатов в платформе обмена сообщениями. Я использую std :: find_if, чтобы перебрать список указателей, чтобы найти один с правильным идентификатором, и я хочу взять указатель на этот найденный объект, освободить его (удалить?) И переназначить этот указатель, чтобы он указывал на объект, который ягенерировать с "новым" ключевым словом. Я думаю, что я делаю это правильно, но я не уверен, как проверить.
Я попробовал пару разных итераций, столкнулся с некоторыми проблемами, когда я понял, что я использую const_iterator, а не просто итератор, поэтомуЯ не мог изменить какие-либо данные. Но я исправил это, и похоже, что это работает, но я не уверен.
Вот что у меня есть:
GroupChat *gc = new GroupChat(); // extends Conversation
// ...I update the member data here...
auto foundChat = std::find_if(conversations_.Conversations.begin2(),
conversations_.Conversations.end2(),
[this, gc](Conversation* o) { // my code to find the correct one...
}
if (foundChat != conversations_.Conversations.end()) {
auto c = (*foundChat);
delete c; // Is this right? Not positive...
//*foundChat = nullptr; // do I need this?
c = gc;
}
Кажется, что это работает, но я 'Я беспокоюсь о висячих указателях и неправильном освобождении / распределении памяти. Может ли кто-нибудь проверить меня? Спасибо за любую помощь!