0

我将粘贴一个代码片段并解释我面临的问题,

void materialPropertiesDlg::OnNext() {
    contiBeam *continousBeamPtr;
    contiBeam contiBeamObj;
    UpdateData(TRUE);
    switch (m_steel_grade) {
        // Do Something
    }   
    continousBeamPtr->setMaterial(m_conc_grade, m_steel_grade);
    OnOK();
}

如您所见,在第 2 行中创建了一个指针对象,在下一行中创建了一个对象。所以,然后我调用setMaterials()类的成员函数contiBeam。我可以很容易地用对象做到这一点contiBeamObj,但是当我使用调用函数时contiBeamPointer,windows会抛出一个错误,内容为

应用程序已停止工作。

我能够做必要的事情,我只是想知道这可能是什么原因?

4

1 回答 1

0

您正在使用您的指针contiBeam *continousBeamPtr; 而没有分配它。

那是未定义的行为,会使您的应用程序崩溃。

您应该使用 分配(保留内存)指针new,如下所示:

 contiBeam *continousBeamPtr = new contiBeam;

然而,最终的问题是,你为什么首先使用指针?你需要一个吗?从您发布的代码看起来不像。

于 2012-09-10T13:00:27.380 回答