c++ - c++ 应用程序在执行递归函数时崩溃
问题描述
我有一个名为btnTimeIn
调用identifyStaff()
函数的按钮:
public: System::Void btnTimeIn_Click(System::Object^ sender, System::EventArgs^ e) {
this->identifyStaff();
}
我的identifyStaff()
功能是检查员工/用户是否被识别。如果未识别,则会出现一个带有确定按钮的消息框,如果ok
单击该按钮,则将再次调用该identifyStaff()
函数。
private: System::Void identifyStaff() {
uint32 flag = 0; // 1:accept or 0:reject
... some code beign skip
flag = 1;
... some code being skip
// accept or if finger print was indentified
if (flag == 1){
// Open confirmation form
}
else
{
if (MessageBox::Show("Staff unidentified. Please rescan again.",
"Timestamp", MessageBoxButtons::YesNo,
MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes) {
this->identifyStaff();
}
else {
// do nothing. Close the MessageBox
}
}
}
现在这就是我运行应用程序时所做的:
- 点击“时间”按钮
- 我将未注册的手指放入生物特征
- 将出现带有重试按钮的消息框以重试。
- 我单击消息框中的重试/确定按钮
- 再次将手指放入生物特征(这次是注册的手指)
- 识别成功,确认表格打开。
- 我关闭确认表单,然后应用程序崩溃。
我还是 C++ 的初学者,还没有深入研究递归函数。
那么,为什么我会收到此错误/为什么我的应用程序会崩溃?
提前感谢您分享您的知识。
更新 我在帖子中更新了我的代码以显示标志变量。
解决方案
看起来你的递归函数的条件永远不会设置为 true,你最终会遇到堆栈溢出异常。你从来没有修改过identified
里面的变量identifyStaff
。
推荐阅读
- linux - 如何使用 gcc docker 容器覆盖 linux 主机的 gcc
- javascript - Eslint 解析错误:`Unexpected token <` 由下划线模板引起
- python - 在 Keras 中训练时出现无效的参数错误
- python - 优化熊猫应用回顾前行中间计算
- python-3.x - 如何从轴获取网格线的可见性?
- jquery - 通过ajax提交表单时未定义的索引用户
- packer - 无法使用带有 private_key 身份验证的打包程序在 virtualbox 中创建 OVA
- ruby - RVM 通过 repo 文件自动检测 Ruby 版本的功能在 VSCode 登录 shell 终端中不起作用
- java - 实现自定义注解
- javascript - 如何重写这个双箭头函数