我将粘贴代码段并解释我面临的问题,
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
调用该函数时,窗口会抛出一个错误,其中包含
应用程序已停止工作。
我能够做到这一点,我只是想知道可能的原因是什么?
答案 0 :(得分:0)
您正在使用指针contiBeam *continousBeamPtr;
而未分配它。
未定义的行为会使您的应用程序崩溃。
您应该使用new
为您的指针分配(保留内存),如下所示:
contiBeam *continousBeamPtr = new contiBeam;
然而,最终的问题是,为什么你首先使用指针?你需要一个吗?从您发布的代码中看起来不像。