MainWindow::runButton_clicked()
私はGraphWindow
のオブジェクトをインスタンス化しました。 MainWindow
の別の関数でこのオブジェクトにアクセスする必要があるので、オブジェクトのアドレスを同じ型のポインタに渡そうとしました。 MainWindow.hで同じタイプのポインタを使ってオブジェクトのアドレスを渡す
//Forward declaring Graphwindow
class GraphWindow;
class MainWindow : public QMainWindow
{
//Member slots
GraphWindow *graphPtr;
}
in MainWindow.cpp
MainWindow::on_runButton_clicked()
{
GraphWindow graphObj;
MainWindow::graphPtr = &graphObj;
//Other code
}
MainWindow::someFunction()
{
MainWindow::graphPtr->exec();
}
私は、これは物事を行うための最もエレガントな方法ではありません知っています。私がこれをやっている理由。
- 私は
class GraphWindow
以来MainWindow
定義 にGraphWindow
のオブジェクトを作成できません。そこは - 前方宣言されている私は、ポインタを使用することができます「GraphPtr
to access all its member functions in
メインウィンドウ:: on_runButton_clicked()but I'm using this function called
QTimer :: SINGLESHOT()in
メインウィンドウ:: on_runButton_clicked()which requires a object of type
GraphWindow`
とにかく私は、ポインタの広告accessiで作成されたオブジェクトのアドレスを格納することによって行う方法を推測後で正しいです。しかし、なぜ私のプログラムがクラッシュするのか分かりません。何かアドバイスをいただきました。 。
、graphObjは(on_runButtonClickedの終わりに破壊されます) –
ポインタは、オブジェクトが有効範囲外になったらオブジェクトを生かしておくことはできません。 'on_runButton_clicked()'の最後に 'graphObj'が破壊されます。 'graphPtr'は今やぶら下がりポインタです。 graphObjをon_runBittonClickedに動的に割り当てて、使用した後にgraphObjを削除する必要があります。 –