0

printn 関数でセグメンテーション違反が発生する理由を誰か教えてもらえますか?

「grad.h」

namespace Ui {
class grad;
}

class grad : public QMainWindow
{
  Q_OBJECT

  public:
  explicit grad(QWidget *parent = 0);
  ~grad();

private:
Ui::grad *ui;
};

「コース.cpp」

void course::printr(vector<course> c){
    QString string;
    for(int i = 0; i < (int)c.size();i++){
        string = QString::fromStdString(c[i].getTitle());
        Ui::grad->textEdit->append(string);
    }
}

Ui::grad 部分に到達する for ループの最初の反復まで、デバッガーは正しい出力を表示します。次に、セグメンテーション違反が発生します。さらにコードを投稿する必要がある場合はお知らせください。

4

3 に答える 3

1

textEdit がクラス QTextEdit であるかどうかはわかりません。もしそうで、テキストを追加したいだけなら試してみてください

textEdit->setText(textEdit->plainText().append(string));
于 2013-08-02T08:55:57.677 に答える
1

Ui::grad->textEdit->append(string);
エラーはここにありますが、コンパイルされるべきではありません。
Ui::gradはクラスの名前です。演算子->を使用することはできません。必要なことを行うには、gradクラスのインスタンス(名前空間Ui::gradだけではなく)が明らかに必要です。 また、オブジェクトと同じ方法でクラスに名前を付けることは一般的に良い考えではありません。この種のエラーを見つけやすくするために、何らかの命名規則を使用する必要があると思います。grad

于 2013-08-02T09:01:40.520 に答える