相关疑难解决方法(0)

C++函数中静态变量的生命周期是多少?

如果变量声明为static在函数的作用域中,则仅初始化一次并在函数调用之间保留其值.它的生命到底是什么?它的构造函数和析构函数何时被调用?

void foo() 
{ 
    static string plonk = "When will I die?";
}
Run Code Online (Sandbox Code Playgroud)

c++ static lifetime

359
推荐指数
4
解决办法
17万
查看次数

QML中使用的单例导致退出时崩溃

我没有严格遵循Qt 的文档.而不是使用新的我使用静态局部变量来能够调用单例类的析构函数.这里描述了不同之处.

我的问题是退出我的程序时,我的一个单例类导致它崩溃.在调试模式下,调试器将停止在该类的析构函数中.这个单例类和其他类之间的不同之处在于我的QML和cpp文件都使用了这个类.

我的问题是我是否必须使用new关键字为这个单例分配一个实例?

头

class AppConfiguration : public QObject
{
    Q_OBJECT
    Q_DISABLE_COPY(AppConfiguration)

    Q_PROPERTY(bool serverMode READ serverMode WRITE setServerMode NOTIFY serverModeChanged)

public:
    static QObject* instance(QQmlEngine* engine = NULL, QJSEngine* scriptEngine = NULL);
    ~AppConfiguration();

protected:
    AppConfiguration();

private:
    static QObject* s_instance;
};
Run Code Online (Sandbox Code Playgroud)

CPP

QObject* AppConfiguration::s_instance = NULL;

QObject* AppConfiguration::instance(QQmlEngine *engine,
                                        QJSEngine *scriptEngine)
{
    Q_UNUSED(engine)
    Q_UNUSED(scriptEngine)

    static AppConfiguration s_instance;

    return &s_instance;
}

AppConfiguration::AppConfiguration() :
    m_serverMode(true)
{

}

AppConfiguration::~AppConfiguration()
{

}
Run Code Online (Sandbox Code Playgroud)

主要

int main(int argc, char *argv[])
{
    QApplication app(argc, …
Run Code Online (Sandbox Code Playgroud)

c++ singleton qt qml

1
推荐指数
2
解决办法
1184
查看次数

标签 统计

c++ ×2

lifetime ×1

qml ×1

qt ×1

singleton ×1

static ×1