在c ++中返回main()

时间:2017-12-09 20:34:56

标签: c++

我刚进入c ++并且我只是在尝试。我想制作一个简单的程序,它接受用户输入并调用两个函数之一,然后该函数将打印一行并询问用户是否要再次使用。问题是c ++,出于某种原因,不允许我通过简单的说main()来调用main; 有没有办法从另一个函数调用main函数?我正在寻找最简单的解决方案,但我找不到任何东西:/

以下是代码:

#include <iostream>
#include <string>
using namespace std;


int do_math() {
    cout << "Math" << endl;

    string user;
    cout << "would you like to go again? (y or n): " << endl;
    cin >> user;

    if (user == "y") {
        main();
    }

    else if (user == "n") {
        cout << "Okay, bye!";
        exit(0);
    }
    return 0;
}

int do_eng(){
    cout << "Eng";

    string user;
    cout << "would you like to go again? (y or n): " << endl;
    cin >> user;

    if (user == "y") {
        main();
    }

    else if (user == "n") {
        cout << "Okay, bye!";
        exit(0);
    }
    return 0;
}
int main() {

    string user;

    cout << "Would you like to do math or end?:";
    cin >> user;

    if (user == "math") {
        do_math();
    }
    else if (user == "end") {
        do_eng();
    }
    return 0;
}

2 个答案:

答案 0 :(得分:0)

  

问题是c ++,出于某种原因,不允许我调用main   简单的说主要();有没有办法调用主函数   另一个功能?我正在寻找最简单的解决方案,但是   我找不到任何东西:/

不,您不想从任何代码中调用main。

并不是说你应该这样做......但最简单的解决方案是提供一个可调用的函数,并以最简单的方式从main进入。

也许:

int myMain()
{
  string user;

  cout << "Would you like to do math or end?:";
  cin >> user;

  if (user == "math") {
      do_math();
  }
  else if (user == "end") {
      do_eng();
  }
  return 0;
}


int main(int, const char**) 
{
   return myMain();
}

第1课 - 尝试添加另一级别的间接(即myMain())没有main()的限制

第2课 - 学习一些有关递归的知识......似乎你可能想避免它,在这里。 (即如果你总是调用myMain(),你的程序如何终止?

第3课 - 在我的系统上,如果程序终止,我可以向上箭头并轻松地启动它。终端shell为你做这个东西。也许这将是一种更好的方法......总是终止,除非用户选择其中一个动作选择(数学,打嗝等)

第4课 - 研究其他程序及其用户界面的工作原理。找一个你喜欢的模特。

注意 - 我想,为了让你的代码再次调用myMain(),你需要'转发声明'这个函数。

答案 1 :(得分:-1)

不,该标准明确禁止从程序main()调用code。您想要的是loop中的main

int main()
{
    bool bContinue;
    do
    {
        /* do something */
        std::cout << "Do you want to go again?";
        cin >> bContinue;
    } while(bContinue);
}