【发布时间】:2017-07-28 09:31:37
【问题描述】:
我在我的 Qt 项目中使用共享指针,但是当我通过共享指针调用 setLayout() 时出现分段错误。
我这样称呼它:
model->getBody()->setLayout(layoutTemplate.get());
函数getBody()返回一个std::shared_ptr:
std::shared_ptr<QWidget> MainTemplate::getBody()
{
return std::shared_ptr<QWidget>(ui->body);
}
我尝试使用QSharedPointer 而不是std::shared_ptr,但结果相同。
为什么我的指针被删除了?
【问题讨论】:
-
由于
shared_ptr只存在于该语句的末尾,下次您尝试使用ui->body时,它将被删除。 -
谢谢,所以我不能用getter返回shared_ptr?
-
你为什么需要
shared_ptr? -
我不知道,这是我主管的要求。
-
为什么要使用带有父母的 QObjects 的智能指针?你知道父 QObject 在被破坏时会删除它的所有子对象吗?
标签: c++ qt shared-ptr