[英]C++ abort() on abstract class object pointer call inside a function
我有一个抽象类的钟摆,它带有纯虚函数period()和两个后代(数学和弹簧),实现函数period()。
我有一个摆锤** pendArray =新摆锤* [n]。 我用数学和spring类对象指针填充数组,并将数组传递给findMaxPeriod(pendulum ** a)函数:
void findMaxPeriod(pendulum **a)
{
pendulum *maxPend = new math();
double maxPeriod = 0;
double period1;
for (int i = 0; i < n; i++)
{
pendulum *pend = a[i];
period1 = pend->period();
if (period1 > maxPeriod)
{
maxPend = a[i];
}
}
cout << "max period pendulum is " << maxPend << ". It's period is " << maxPend->period();
}
它崩溃了
period1 = pend->period();
与“调试错误!已调用abort()”
我究竟做错了什么? 这是我所有的代码: https : //hello-site.ru/share/Abort-drawn-problem/预先感谢。
问题在这里:
math pendM;
cin >> pendM;
pendArray[i] = &pendM;
在第三行中,您已将指向pendM
的指针pendM
到数组中,但是当pendM
超出范围时,它将在该行之后立即被销毁。 如果要保留它(从而避免在pendArray
悬空的指针),则需要从堆而不是堆栈中分配它。
下一个方框中的pendS
也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.