Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从QList中删除并重新分配指针<;对象*>;使用迭代器创建新对象,对吗?_C++_Qt - Fatal编程技术网

C++ 从QList中删除并重新分配指针<;对象*>;使用迭代器创建新对象,对吗?

C++ 从QList中删除并重新分配指针<;对象*>;使用迭代器创建新对象,对吗?,c++,qt,C++,Qt,我有一个QList,我正在尝试用新对象替换列表中的对象。上下文是,我有一个自定义对象列表(类名为“Conversation”)来表示消息传递平台中的组聊天列表。我使用std::find_if遍历指针列表,以找到一个具有正确ID的指针,我希望将指针指向找到的对象,取消分配它(delete?),并将该指针重新分配给我使用“new”关键字生成的对象。我认为我做得对,但我不确定如何验证 我尝试了几个不同的迭代,遇到了一些问题,我意识到我使用的是常量迭代器,而不仅仅是迭代器,所以我无法修改任何数据。但我已

我有一个QList,我正在尝试用新对象替换列表中的对象。上下文是,我有一个自定义对象列表(类名为“Conversation”)来表示消息传递平台中的组聊天列表。我使用std::find_if遍历指针列表,以找到一个具有正确ID的指针,我希望将指针指向找到的对象,取消分配它(delete?),并将该指针重新分配给我使用“new”关键字生成的对象。我认为我做得对,但我不确定如何验证

我尝试了几个不同的迭代,遇到了一些问题,我意识到我使用的是常量迭代器,而不仅仅是迭代器,所以我无法修改任何数据。但我已经解决了这个问题,它似乎在起作用,但我不能肯定

以下是我得到的:

GroupChat*gc=newgroupchat();//扩展会话
//…我在此更新成员数据。。。
auto-foundChat=std::find_if(conversations_u.conversations.begin2(),
conversations_.conversations.end2(),
[this,gc](对话*o){//我的代码找到了正确的一个。。。
}
if(foundChat!=conversations\uu.conversations.end()){
自动c=(*foundChat);
删除c;//这是对的吗?不是正的。。。
//*foundChat=nullptr;//我需要这个吗?
c=gc;
}

它似乎正在工作,但我担心指针悬空和内存释放/分配不正确。有人能在这方面抽查我吗?谢谢你的帮助!

*/*foundChat=nullptr;//我需要这个吗?没有。
c=gc;
是错误的:这只是分配给局部变量。也许你想要
auto&c=*foundChat;
?@drescherjm好的,太好了,谢谢!@Daviserring看起来不错!那么,如果我使用它,使用
c=gc;
会成功地更改迭代器找到的指针吗?@IanBurns:呃,可能只要
QList
没有做一些奇怪和容易出错的事情就行了。(如果它没有编译,Qt会很奇怪,但不容易出错。)@Davidsherring完美!它似乎在编译和更新,我想我现在只需要更新QabStretcListModel以反映指针的更改。谢谢!*/*foundChat=nullptr;//我需要这个吗?不。
c=gc;
是错误的:这只是分配给局部变量。也许你想要
自动&c=*foundChat;
?@drescherjm好的,thanks!@Daviserring看起来不错!所以,如果我使用它,会使用
c=gc;
成功地更改迭代器找到的指针吗?@IanBurns:Er,可能只要
QList
没有做一些奇怪和容易出错的事情就行了。(如果它没有编译,Qt会很奇怪但不容易出错。)@DavidSherring完美!它似乎在编译和更新,我想我现在只需要更新QabStretcListModel来反映指针的变化。谢谢!