簡體   English   中英

QT析構函數未被調用

[英]QT Destructor not being called

我在qt控制台應用程序中遇到問題,未調用MyServer類的析構函數。 這是我的簡化代碼:

#include <QtCore/QCoreApplication>
#include "MyServer/myserver.h" 
int main(int argc, char *argv[])
{

    QCoreApplication a(argc, argv); 
    MyServer server;
    server.startServer();
    return a.exec();

}

myserver.h

class MyServer : public QTcpServer
    {
        Q_OBJECT

public:
    MyServer(QObject *parent = nullptr);
    ~MyServer();
    QFile* file;
}

myserver.cpp

MyServer::MyServer(QObject *parent)
    : QTcpServer(parent)
{
    file = new QFile("file.ini",this);

}


MyServer::~MyServer()
{
    QSettings settings(file->fileName(), QSettings::IniFormat, this);
    settings.beginGroup("testGroup");


    settings.setValue("testValue", "asdf");
        settings.endGroup();
}

析構函數應更改file.ini,但不更改。

MyServer::file可能是您的問題。 您是否正在打開該文件以在代碼的其他位置進行寫訪問? 因為QSettings還將嘗試打開同一文件,並且您對同一文件的兩次並發訪問可能正在破壞其內容。

如果您不需要MyServer::file的任何東西,那就擺脫它。 QSettings不需要QFile 它只需要文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM