我有一个名为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 ++的初学者,还没有深入研究过递归函数。
那么,为什么我会收到此错误/为什么我的应用程序崩溃?
提前感谢您分享您的知识。
更新 我在post中更新我的代码以显示标志变量。
答案 0 :(得分:0)
看起来递归函数的条件永远不会设置为true,最终会出现堆栈溢出异常。您从未修改identified
内的identifyStaff
变量。