gpt4 book ai didi

c++ - 如何在qt中删除之前检查指针是否存在

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:56 25 4
gpt4 key购买 nike

我正在使用 QAbstractTableModel。该模型在其中保存数据。它是在用户点击时创建和删除的。

这是用户点击创建模型后连接的插槽:

void clicked(){
model = new QAbstractTableModel(data);
model->setManyThings();
}

这是用户点击清除模型后连接的插槽:

void clear(){
if (model != nullptr)
delete model;
}

但是,这无法检查 model 是否存在。如果我点击两次清除程序直接崩溃。如果我点击clear没有创建模型,程序直接崩溃。

那么如何判断模型是否存在

最佳答案

您在第一次调用时删除了 model 对象,显然在第二次调用中它崩溃了,因为您试图调用一个已经删除的对象。

事实上,您实际上是在检查 model 是否存在,如果 model != nullptr 意味着此指针指向实际对象。如果您想重置“模型”对象,只需在删除另一个对象后创建一个新对象:

void clear(){
if (model != nullptr)
{
delete model;
model = new QAbstractTableModel(data);
}
}

如果您只想删除它并继续进行适当的检查,只需将指针设置为 nullptr:

void clear(){
if (model != nullptr)
{
delete model;
model = nullptr;
}
}

关于c++ - 如何在qt中删除之前检查指针是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33933879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com