私は最初の Qt アプリケーションであるウィジェットに実際に取り組んでおり、標準ライブラリ マップを<int, QString>
ペアで埋めようとするとセグメンテーション違反が発生します。私の目標は、マップを int キーと QString 値で埋めることです。ペアがこれを行うための最良の方法であるかどうかわからないので、アドバイスは素晴らしいでしょう.
メイン以外の唯一のソース ファイルは次のとおりです。
#include "linuxtips.h"
#include "ui_linuxtips.h"
LinuxTips::LinuxTips(QWidget *parent) :
QWidget(parent),
ui(new Ui::LinuxTips)
{
loadRandTip();
ui->setupUi(this);
}
LinuxTips::~LinuxTips()
{
delete ui;
}
void LinuxTips::on_learnMore_clicked()
{
}
void LinuxTips::on_viewAll_clicked()
{
}
void LinuxTips::loadRandTip()
{
int i = 0;
std::map<int, QString>::iterator it;
QString line;
QFile inputFile(":/tipFile.txt");
inputFile.open(QIODevice::ReadOnly);
QTextStream in(&inputFile);
do{
line = in.readLine();
// this->TipMap.insert(it, std::pair<int, QString >(i,line));
i++;
}while(!in.atEnd());
}
コメントを外すthis->TipMap.insert(it, std::pair<int, QString >(i,line));
と実行されます。これはセグ フォールトであるため、メモリ オーバーフローまたはヌル ポインターであると確信していますが、それが何であるかはわかりません。助けてくれてありがとう。