You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用QList::push_back插入对象时程序崩溃,求解决建议

问题解决建议

核心问题1:指针访问成员函数的语法错误

你声明的items是指针类型的QList,直接用.调用push_back是错误的,必须使用指针成员访问运算符->:

items->push_back(item);

如果用.的话,编译器会尝试访问指针变量本身的成员(而非指向的QList对象的成员),这会触发未定义行为,直接导致崩溃。

核心问题2:确认QList指针是否完成初始化

检查CPP文件的构造函数,必须确保items被正确分配内存:

// 构造函数中
items = new QList<className>();

如果构造函数里没做这一步,items会是野指针/空指针,调用push_back必然崩溃。

额外注意:className的拷贝兼容性

如果className是QObject的子类(比如继承了QWidget、QObject等),QObject子类是禁止拷贝的,此时QList<className>本身就是非法的,必须改成QList<className*>存储指针:

// 头文件修改
QList<className*> *items;

// 成员函数中
className *item = new className();
item->set_name("name");
items->push_back(item);
// 注意:析构函数中需要遍历列表delete每个元素,再delete items

如果className不是QObject子类,要确保它有正确的拷贝构造函数和赋值运算符(如果自定义了析构函数,必须遵循三/五法则),否则拷贝实例时可能出现内存问题导致崩溃。

内容的提问来源于stack exchange,提问作者Sean Lau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:56:06