在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,然后在您使用它之后将其删除。 –