void Light::resizeEvent(QResizeEvent* event)
{
Light::resizeEvent(event); //????????????
int aa = ui->centralWidget->height();//,bb = ui->centralWidget->height();
labelFovXValue->setText(QString::number(aa));
}
warning: C4717: “Light::resizeEvent”: 如递归全部控件路径,函数将导致运行时堆栈溢出
{
Light::resizeEvent(event); //????????????
int aa = ui->centralWidget->height();//,bb = ui->centralWidget->height();
labelFovXValue->setText(QString::number(aa));
}
warning: C4717: “Light::resizeEvent”: 如递归全部控件路径,函数将导致运行时堆栈溢出
解决方案
5
void Light::resizeEvent(QResizeEvent* event)
{
//Light::resizeEvent(event); //????????????
int aa = ui->centralWidget->height();//,bb = ui->centralWidget->height();
labelFovXValue->setText(QString::number(aa));
}
{
//Light::resizeEvent(event); //????????????
int aa = ui->centralWidget->height();//,bb = ui->centralWidget->height();
labelFovXValue->setText(QString::number(aa));
}
3
递归不应太深,否则会导致浅溢出
2
默认栈大小有限制的
3
递归需要有条件来控制, 没有结束条件的无穷递归, 无论分配多大的内存都会溢出, 及时你内存无限大, 函数也不会返回, 执行时间也将是无限长
2
在现实世界中,除时间和空间可能是无限的以外,其它任何事物都是有限的。
2
无限递归,不溢出都不科学
3
你用的是QT。
void QWidget::resizeEvent(QResizeEvent * event)是个虚函数。
你在Light类中重载了这个函数。
因此Light::resizeEvent(event);还是调用的Light中的resizeEvent函数。所以无限循环。
假如void QWidget::resizeEvent(QResizeEvent * event)这个函数不是虚函数,你写的也不正确。
void QWidget::resizeEvent(QResizeEvent * event)是个虚函数。
你在Light类中重载了这个函数。
因此Light::resizeEvent(event);还是调用的Light中的resizeEvent函数。所以无限循环。
假如void QWidget::resizeEvent(QResizeEvent * event)这个函数不是虚函数,你写的也不正确。