QMap<QString, Class*> SIGSEGV при вставке значения

141
01 апреля 2019, 05:00

В проекте создается экземпляр класса DatabaseManager. В нем я создаю экземпляры класса Database в функции setupNewDatabase. Когда я пытаюсь добавить в QMap<QString, Database*> указатель и ключ, приложение выдает SIGSEGV и останавливает на вызове функции detach() в классе QMap. Выполняется все в одном потоке. Код:

#pragma once
#include <QObject>
#include <QMap>
#include <QMapIterator>
#include "../core/database.h"
class DatabaseManager : public QObject
{
    Q_OBJECT
public:
    explicit DatabaseManager(QObject *parent = nullptr);
             ~DatabaseManager();
    bool    setupNewDatabase(QString competition);
private:
    QMap<QString, Database*> m_Databases;
};
#include "databasemanager.h"
DatabaseManager::DatabaseManager(QObject *parent) : QObject(parent) {
}
bool DatabaseManager::setupNewDatabase(QString competition) {
    Database *database = new Database();
    if (database->createDatabase(competition)) {
        m_Databases.insert(competition, database); << CRASH
        return true;
    } else {
        m_lastDatabaseError = database->lastError();
        database->deleteLater();
        return false;
    }
}
Answer 1

Не был инициализирован класс DatabaseManager(да, очень тупая ошибка)

READ ALSO
Windows API, _set_se_translator

Windows API, _set_se_translator

Будет ли работать _set_se_translator в dll, собранной с флагом /EHa, если подключить такую dll к проекту без такого флага?

129
Как узнать края окна win32 в С++ на visual studio 2017

Как узнать края окна win32 в С++ на visual studio 2017

Здравствуйте я начал осваивать C++ примерно месяц назадПока что разобрался только с консолью и захотел сделать нормальное приложение, но я совсем...

120