qt因指针未初始化而引发的crash错误

谨记!!!谨记!!!
qt因指针未初始化而引发的crash错误

1.老规矩看一下问题代码
Login类构造函数,h为指针变量已在.h文件中声明.声明的指针变量一定要初始化!!!一定要初始化!!!一定要初始化!!!否则也会报crash错误

Login::Login(QWidget* parent)
    : QWidget(parent)
    , ui(new Ui::Login)
{
    ui->setupUi(this);

    connect(h, &Home::back, this, &Login::showme);

    connect(ui->btn_login, &QPushButton::clicked, this, &Login::hideme);
    h = new Home();
}

槽函数

void Login::showme()
{
    //h窗口展示
    this->show();
    h->hide();
}

void Login::hideme()
{
    //当前窗口隐藏
    h->show();
    this->hide();
}

2.此段代码报错(crash)解决方案
指针变量的初始化一定要在使用之前!!!指针变量的初始化一定要在使用之前!!!指针变量的初始化一定要在使用之前!!!
修改如下

Login::Login(QWidget* parent)
    : QWidget(parent)
    , ui(new Ui::Login)
{
    ui->setupUi(this);

    h = new Home();
    connect(h, &Home::back, this, &Login::showme);

    connect(ui->btn_login, &QPushButton::clicked, this, &Login::hideme);

}

完美运行
qt因指针未初始化而引发的crash错误
qt因指针未初始化而引发的crash错误



参考:我的老师

上一篇:socket socketserver


下一篇:MongoDB数据库启动失败