我正在尝试制作所有游戏中最简单的游戏,但是使用循环功能。
我收到错误“在'{'之前不允许使用函数定义,以及输入结束时[错误]预期'}'的完整列表。
我不允许将main()嵌入另一个中吗?这是我的问题吗?如何在没有嵌套的情况下完成此代码?
我的知识和经验不超过两本书中的几章。
cookieA
答案 0 :(得分:3)
您的问题是在现有主函数内嵌套主函数。 (这是不允许的。)一般情况下(除了某些东西,你可以使用接近这种功能的结构/ lambda),你不应该将函数嵌套在彼此之内。如果您只是删除函数声明,那么您的代码应该可以正常工作:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
char again = 'y';
while (again == 'y')
{
srand(static_cast<unsigned int>(time (0)));
int secret = rand() % 100 +1;
int tries = 0;
int guess;
cout << "\tGuess the random number\n\n";
do
{
cout << "Enter a guess: ";
cin >> guess;
++ tries;
if (guess > secret)
{
cout << "Too High!\n\n:";
}
else if (guess < secret)
{
cout << "Too Low!\n\n";
}
else
{
cout << "\nThat's It! You go it in " << tries << " guesses!\n";
}
} while (guess != secret);
cout << "\n\tWould you like to play again? (y/n): ";
cin >> again;
}
}
答案 1 :(得分:2)
据我所知,由于多种原因,您无法在int main()
内嵌套int main()
。通常,您不能在另一个函数内定义一个函数(定义&#34;本地&#34;)。但是,即使你可以,你这样做的愿望应该是一个巨大的红旗,你的设计已经关闭。
注意:正如Nathan Oliver在评论中指出的那样,你可以向前宣告一个功能&#34;本地&#34; (在另一个函数内),但实际的实现必须在外面。即使这样做,你通常也应该在这一点上猜测你的设计。
你需要问问自己你想做什么。
您是否希望在功能下将代码组合在一起以重复调用?然后在main()
创建一个单独的函数(使用不同的名称) 。
您想重复代码吗?如果是这样,则需要循环或递归函数结构。
您是否希望将某些行为拆分为多个函数,但是隐藏了除一个函数之外的所有函数?如果是这样,请查看类(不一定是对象 - 您也可以使用静态类。)
这些只是很多可能性中的三种,并且确定您想要做什么以及如何做到这一点是您自己决定作为程序员的唯一责任。
简要回顾:就C ++(和C)而言,如果你试图在任何其他函数中声明任何函数,那么你在设计中做了一些严重的错误。 < / p>
在更技术性的说明中,您还应该准确理解int main()
是什么。这是一个特殊功能,是您程序的入口点。没有int main()
,没有C或C ++程序可以运行。
您必须在main.cpp
中拥有此功能的单个实例才能使您的程序正常运行。如果您有多个int main()
,则计算机可能无法找到入口点。
除此之外,在代码中有多个名为main()
的函数是一种让自己和他人混淆的好方法。
简而言之,每个程序只能有一个int main()
,没有例外。