Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数C++的返回_C++_Function_Return - Fatal编程技术网

函数C++的返回

函数C++的返回,c++,function,return,C++,Function,Return,我正在做的是,我正在尝试做一个基于文本的测试,我希望当游戏结束时,玩家可以选择退出测试或从一开始就重新启动,但它将在函数中被询问。我无法在这里提供代码,因为它超过数百行,所以基本上我想做的是能够退出程序或通过返回int main的顶部重新启动程序,但这样做的选项将在函数内部 例如: void Answer { Enter 1 to exit and enter to 2 restart //player inputs number and there is an if else statemen

我正在做的是,我正在尝试做一个基于文本的测试,我希望当游戏结束时,玩家可以选择退出测试或从一开始就重新启动,但它将在函数中被询问。我无法在这里提供代码,因为它超过数百行,所以基本上我想做的是能够退出程序或通过返回int main的顶部重新启动程序,但这样做的选项将在函数内部

例如:

void Answer
{
Enter 1 to exit and enter to 2 restart
//player inputs number and there is an if else statement
if number == 1
    {
    return (0);
    }
else if number == 2
    {
    return main();
}
int main()
{
question
}

提前谢谢

也许您可以使用while循环而不使用函数

int restart(0);

while(restart==1)
{
  // do your quizz

  cout << "Press 1 to restart, 2 to stop" << endl;
  cin << restart;

  // Some test to see if the right thing was put in the restart variable    
}
那不管用吗


如果我误解了这个问题,很抱歉。

要做您想做的事情,唯一的方法就是使用C++的异常抛出和捕获机制

在C语言中,可以使用setjmp和longjmp`但安全性较低

一般来说,这被认为是一个好主意,仅用于错误处理或其他特殊原因,而不用于正常操作


对于正常操作,应该允许函数堆栈正常展开,方法是返回一个函数,直到返回到main中。

提示:可以使用循环,而不要直接调用main。有两个函数:第一个运行游戏调用循环中的第二个函数,并提供退出游戏的可能性。注意:您不能直接调用main!你应该阅读C++的基本指南。它会为你回答你的问题。另外,StackOverflow不是一个编码服务。我会尝试循环方法。他也可以使用goto:我只是开玩笑,不要这样做!到目前为止,这不是唯一的方法。是的,我最近才发现goto不应该再被使用了@doron我一个半月前才开始编程,所以我仍然不知道如何使用异常机制。goto不能跳出函数。