在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();
}
我知道這是不是最優雅的方式做的事情;我之所以這樣做;
- 在
MainWindow
定義,我不能創建一個GraphWindow
對象 因爲class GraphWindow
向前聲明有 - 我可以只使用指針「GraphPtr
to access all its member functions in
的MainWindow :: on_runButton_clicked()but I'm using this function called
QTimer :: singleShot()in
的MainWindow :: on_runButton_clicked()which requires a object of type
GraphWindow`
無論如何,我想我通過存儲指針廣告accessi創建的對象的地址,這樣做的方式以後是正確的。但不知道爲什麼我的程序崩潰。任何意見讚賞。 。
由於它是在堆棧上創建的,graphObj在on_runButtonClicked的端部破壞( ) –
一旦指針超出範圍,指針將不會保持活動狀態。在'on_runButton_clicked()''graphObj'的末尾被銷燬。 'graphPtr'現在是一個懸掛指針。 在我看來,您需要在on_runBittonClicked中動態分配graphObj,然後在您使用它之後將其刪除。 –