C++ '{' 标记之前不允许有函数定义吗?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22185288/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Is a function definition not allowed here before a '{' token?
提问by user3233136
I am creating a game, and I have this code. However, it is not working:
我正在创建一个游戏,我有这个代码。但是,它不起作用:
#include<iostream>
using namespace std;
const int MAX_ITEMS = 100;
bool running = 1;
int playerInfo[2];
void titleFunc();
int userInput = 0;
void newGameFunc();
int main() {
titleFunc();
newGameFunc();
int playerLocation = 0;
while (running) {
}
if (playerLocation == 1) {
cout << "You are in a dungeon. You have just woke up from escaping the execution of your father. You see a pathway to the North, and a large gaping hole to the South.\n";
cout << "1. Go South\n 2. Go North";
cin >> userInput;
if (userInput == 1)
playerLocation = 2;
else
if (userInput == 2)
playerLocation = 3;
}
return 0;
titleFunc() {
cout << "\t\t\t\t---Fantasee---\n\n\n";
cout << "\t\t\t\t 1:Play\n";
cin >> userInput;
if (userInput == 1) {
newGameFunc();
}
else {
running = 0;
}
return;
}
newGameFunc() {
cout << "Welcome to Fantasee, a world of adventure and danger. \n";
cout << "To begin, please enter your gender: \n 1. Male 2. Female";
cin >> userInput;
playerInfo[0] = userInput;
cout << "And what class do you wish to be? \n 1. Wizard 2. Archer 3. Warrior 4. Trickster 5. Knight 6. Assassin";
cin >> userInput;
playerInfo[1] = userInput;
playerLocation = 1;
return;
}
}
}
}
And I am getting the error message:
我收到错误消息:
g++ Main.cpp -o Main
Main.cpp: In function ‘int main()':
Main.cpp:36:17: error: expected ‘;' before ‘{' token
Main.cpp:67:1: error: expected ‘}' at end of input
Edit: Wrong Error Message
Edited code to current.
g++ Main.cpp -o Main
Main.cpp:在函数“int main()”中:
Main.cpp:36:17:错误:预期的“;” 在 '{' 标记
Main.cpp:67:1 之前:错误:在输入结束时预期为 '}'
编辑:错误的错误消息 将
代码编辑为当前。
回答by Geries
You are declaring the function bodies inside the main function, which is not valid. Also you've been using too many '}'-s.
您在 main 函数中声明了函数体,这是无效的。此外,您使用了太多的 '}'-s。
Your code should look more like this:
您的代码应该更像这样:
#include<iostream>
using namespace std;
const int MAX_ITEMS = 100;
bool running = 1;
int playerInfo[2];
void titleFunc();
int userInput = 0;
int playerLocation = 0;
void newGameFunc();
void titleFunc() {
cout << "\t\t\t\t---Fantasee---\n\n\n";
cout << "\t\t\t\t 1:Play\n";
cin >> userInput;
if (userInput == 1) {
newGameFunc();
}
else {
running = 0;
}
return;
}
void newGameFunc() {
cout << "Welcome to Fantasee, a world of adventure and danger. \n";
cout << "To begin, please enter your gender: \n 1. Male 2. Female";
cin >> userInput;
playerInfo[0] = userInput;
cout << "And what class do you wish to be? \n 1. Wizard 2. Archer 3. Warrior 4. Trickster 5. Knight 6. Assassin";
cin >> userInput;
playerInfo[1] = userInput;
playerLocation = 1;
return;
}
int main() {
titleFunc();
newGameFunc();
while (running) {
}
if (playerLocation == 1){
cout << "You are in a dungeon. You have just woke up from escaping the execution of your father. You see a pathway to the North, and a large gaping hole to the South.\n";
cout << "1. Go South\n 2. Go North";
cin >> userInput;
if (userInput == 1) playerLocation = 2;
else if (userInput == 2) playerLocation = 3;
}
return 0;
}