Дело в общем то даже не в самой QT а с выгрузкой памяти.
Пищу класс обертку (отдаленно напоминающую QSqlDatabase), в ней есть функция insert, при первом обращении она отрабатывает правильно, но при повторном ее использовании с теми же параметрами вылетает с ошибкой.
data.h
#ifndef DATA_H
#define DATA_H
...
class Data : public QObject
{
Q_OBJECT
public:
...
static bool insert(const QString &name, const QString &type);
...
private:
static DataInterface *_currentInterface;
static QMap<QString, DataInterface *> _interfaceMap;
};
#endif // DATA_H
data.cpp
...
#include "data.h"
...
bool Data::insert(const QString &type, const QString &name)
{
QDir pluginsDir(QApplication::applicationDirPath());
pluginsDir.cd("..");
pluginsDir.cd("plugins");
foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
if (DataInterface *interface = qobject_cast<DataInterface *>(loader.instance()))
if (interface->type() == type)
{
if (_interfaceMap.contains(name))
{
_currentInterface = _interfaceMap.take(name);
delete _currentInterface;
}
_currentInterface = interface;
_interfaceMap.insert(name, interface).value();
return true;
}
}
_currentInterface = 0;
return false;
}
...
При выполнении:
db.insert("SQLite", "default");
db.insert("SQLite", "default");
вылетает с ошибкой, что не так?