我刚进入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;
}
答案 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);
}