我有问题。我假设我做的事情真的很愚蠢。我是C ++和Qt的新手。
我有一个类SavedVar。我正在尝试将键/值添加到私有成员Qmap。当我调用SavedVar :: addVar()时,程序崩溃了。 SavedVar :: addvar()正确接收'id'和'notes'。
#include <QObject>
#include <QMap>
#include "variation.h"
#include <QTableWidget>
#include "mainwindow.h"
class SavedVar : public QObject
{
Q_OBJECT
public:
explicit SavedVar(QObject *parent = 0);
void addVar(QString id, QString notes);
void saveVar(QString varText );
void removeSavedVar(QList <QTableWidgetItem*> &varList);
QString generateSaveFile();
void loadVarFile(QString filename);
const QMap<QString, QString>*getVmapPtr();
private:
QMap <QString, QString> vmap;
};
void SavedVar::addVar(QString id, QString notes)
{
vmap[id]= notes;
}
我很难理解Qt creator中的调试输出:
0 QBasicAtomicInt::operator!= qbasicatomic.h 75 0x4116e3
1 QMap<QString, QString>::detach qmap.h 202 0x41ede2
2 QMap<QString, QString>::operator[] qmap.h 526 0x41d241
3 SavedVar::addVar savedvar.cpp 17 0x44afc9
4 SavedVar::loadVarFile savedvar.cpp 82 0x44b4b8
5 MainWindow::load_data mainwindow.cpp 190 0x40d5fe
干杯,
尼尔
答案 0 :(得分:2)
也许你没有通过这样做来初始化QMap对象:
vmap = new(QMap <QString, QString>);
然后你可以用insert()和remove()来操作你的对象。
答案 1 :(得分:-1)
您是否尝试使用QMap方法插入?
void SavedVar::addVar(QString id, QString notes)
{
vmap.insert(id, notes);
}