Qt5.5.1、QtCreator3.5.1でウィジェットAppを作成しています。
MainWindowクラスからPrinterクラスのprintルーチンを呼び出す場合に
ポインタを介しての呼び出しの場合は、突然プログラムを終了します。
尚、添付コードのMainWindowクラスの該当箇所を参照ください
Q1)この突然プログラムを終了する件について、コメント頂け
ますと大変ありがたいです。
添付コード
printer.h================
#ifndef PRINTER_H
#define PRINTER_H
#include <QObject> //for QString str;
class Printer
{
public:
Printer();
void print();
QString str;
};
#endif // PRINTER_H
printer.cpp================
#include "printer.h"
#include <QObject> //for qPrintable
Printer *obj;
Printer::Printer()
{
str="OK";
obj=this;
qDebug("constructor");
}
void Printer::print(){
qDebug("%s", qPrintable(str));
}
mainwindow.h================
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp================
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "printer.h"
extern Printer *obj;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Printer p; //正常に動作する
p.print(); //正常に動作する
//Printer *pp; //Form画面の表示がなく、突然終了
//pp->print();
//obj->print(); //Form画面の表示がなく、突然終了
}
MainWindow::~MainWindow()
{
delete ui;
}
以上

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/25 05:23
2016/12/25 07:36