[英]Why am I getting compile errors “<variable> not declared in this scope”?
前一段时间,我的第一个C ++程序遇到了一些问题。 基本上,我试图做一个C ++课入门课程,在该课程中教授没有教我们语法。 现在是我的代码:
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
using namespace std;
class Race
{
public:
void main()
{
executeRace();
int randomMove()
{
srand(time(NULL));
int randomInt = rand() % 100 + 1;
return randomInt;
}
void executeRace()
{
int rabbitPosition = 1;
int turtlePosition = 1;
cout << "BANG!!!" << endl << "AND THEY'RE OFF!!!";
while (rabbitPosition <=70 && turtlePosition <=70)
{
printPositions(rabbitPosition, turtlePosition);
turtlePosition = turtleMoveSquares(turtlePosition);
rabbitPosition = rabbitMoveSquares(rabbitPosition);
}
printWinner(rabbitPosition, turtlePosition);
tie(rabbitPosition, turtlePosition);
}
int turtleMoveSquares(int tPosition)
{
int turtleMove = randomMove();
if(turtleMove >=1 && turtleMove <= 40)
tPosition = tPosition + 4;
if(turtleMove >= 41 && turtleMove <= 50 )
tPosition = tPosition - 2;
if(turtleMove >=51 && turtleMove <=100)
tPosition = tPosition + 2;
if(tPosition < 1)
tPosition = 1;
return tPosition;
}
int rabbitMoveSquares(int rabbitPosition)
{
int rabbitMove = randomMove();
if(rabbitMove >=1 && rabbitMove <= 25)
rabbitPosition = rabbitPosition;
if(rabbitMove >=26 && rabbitMove <= 55)
rabbitPosition = rabbitPosition + 10;
if(rabbitMove >=56 && rabbitMove <=60)
rabbitPosition = rabbitPosition - 15;
if(rabbitMove >=61 && rabbitMove <= 90)
rabbitPosition = rabbitPosition + 5;
if(rabbitMove >=90 && rabbitMove <=100)
rabbitPosition = rabbitPosition - 3;
if(rabbitPosition < 1)
rabbitPosition = 1;
return rabbitPosition;
}
void printPositions(int rabbitPositions, int turtlePositions)
{
int turtleCount;
int rabbitCount;
int endCount;
if(rabbitPositions == turtlePositions && rabbitPositions != 1)
{
turtleCount = 1;
while(turtleCount < turtlePositions)
{
cout << "-";
turtleCount = turtleCount+1;
}
cout << "OUCH!";
}
else
{
turtleCount = 1;
rabbitCount = 1;
endCount=1;
if(turtlePositions < rabbitPositions)
{
while(turtleCount < turtlePositions)
{
cout << "-";
turtleCount = turtleCount+1;
}
cout << "T";
while(rabbitCount < (rabbitPositions - turtlePositions))
{
cout << "-";
rabbitCount = rabbitCount+1;
}
cout << "H";
}
if(rabbitPositions < turtlePositions)
{
while(rabbitCount < rabbitPositions)
{
cout << "-";
rabbitCount = rabbitCount+1;
}
cout << "H";
while(turtleCount < (turtlePositions - rabbitPositions))
{
cout << "-";
turtleCount = turtleCount+1;
}
cout << "T";
cout << "\n";
}
}
}
void printWinner(int rabbitPosition, int turtlePosition)
{
if(turtlePosition >= 70 && rabbitPosition < 70)
{
cout << "TORTOISE WINS!!! YAY!!!\n";
}
else if(rabbitPosition >=70 && turtlePosition < 70)
{
cout << "Hare wins. Yuch.\n";
}
else if(rabbitPosition >=70 && turtlePosition >=70)
{
cout << "It's a tie\n";
}
}
void tie(int turtlePosition, int rabbitPosition)
{
if(rabbitPosition >=70 && turtlePosition >=70)
executeRace();
}
}
};
int main()
{
Race race;
race.main();
return EXIT_SUCCESS;
}
这是我的编译错误:
uxb3% g++ o- Race Race.cc
g++: o-: No such file or directory
g++: Race: No such file or directory
Race.cc: In member function 'void Race::main()':
Race.cc:14: error: 'executeRace' was not declared in this scope
Race.cc:17: error: a function-definition is not allowed here before '{' token
Race.cc:24: error: a function-definition is not allowed here before '{' token
Race.cc:44: error: a function-definition is not allowed here before '{' token
Race.cc:64: error: a function-definition is not allowed here before '{' token
Race.cc:90: error: a function-definition is not allowed here before '{' token
Race.cc:153: error: a function-definition is not allowed here before '{' token
Race.cc:169: error: a function-definition is not allowed here before '{' token
抱歉让您困扰我,但这是我的第一次,现在我非常沮丧和痴迷。
您可能想要这样:
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
using namespace std;
class Race
{
public:
int randomMove()
{
srand(time(NULL));
int randomInt = rand() % 100 + 1;
return randomInt;
}
void executeRace()
{
int rabbitPosition = 1;
int turtlePosition = 1;
cout << "BANG!!!" << endl << "AND THEY'RE OFF!!!";
while (rabbitPosition <=70 && turtlePosition <=70)
{
printPositions(rabbitPosition, turtlePosition);
turtlePosition = turtleMoveSquares(turtlePosition);
rabbitPosition = rabbitMoveSquares(rabbitPosition);
}
printWinner(rabbitPosition, turtlePosition);
tie(rabbitPosition, turtlePosition);
}
int turtleMoveSquares(int tPosition)
{
int turtleMove = randomMove();
if(turtleMove >=1 && turtleMove <= 40)
tPosition = tPosition + 4;
if(turtleMove >= 41 && turtleMove <= 50 )
tPosition = tPosition - 2;
if(turtleMove >=51 && turtleMove <=100)
tPosition = tPosition + 2;
if(tPosition < 1)
tPosition = 1;
return tPosition;
}
int rabbitMoveSquares(int rabbitPosition)
{
int rabbitMove = randomMove();
if(rabbitMove >=1 && rabbitMove <= 25)
rabbitPosition = rabbitPosition;
if(rabbitMove >=26 && rabbitMove <= 55)
rabbitPosition = rabbitPosition + 10;
if(rabbitMove >=56 && rabbitMove <=60)
rabbitPosition = rabbitPosition - 15;
if(rabbitMove >=61 && rabbitMove <= 90)
rabbitPosition = rabbitPosition + 5;
if(rabbitMove >=90 && rabbitMove <=100)
rabbitPosition = rabbitPosition - 3;
if(rabbitPosition < 1)
rabbitPosition = 1;
return rabbitPosition;
}
void printPositions(int rabbitPositions, int turtlePositions)
{
int turtleCount;
int rabbitCount;
int endCount;
if(rabbitPositions == turtlePositions && rabbitPositions != 1)
{
turtleCount = 1;
while(turtleCount < turtlePositions)
{
cout << "-";
turtleCount = turtleCount+1;
}
cout << "OUCH!";
}
else
{
turtleCount = 1;
rabbitCount = 1;
endCount=1;
if(turtlePositions < rabbitPositions)
{
while(turtleCount < turtlePositions)
{
cout << "-";
turtleCount = turtleCount+1;
}
cout << "T";
while(rabbitCount < (rabbitPositions - turtlePositions))
{
cout << "-";
rabbitCount = rabbitCount+1;
}
cout << "H";
}
if(rabbitPositions < turtlePositions)
{
while(rabbitCount < rabbitPositions)
{
cout << "-";
rabbitCount = rabbitCount+1;
}
cout << "H";
while(turtleCount < (turtlePositions - rabbitPositions))
{
cout << "-";
turtleCount = turtleCount+1;
}
cout << "T";
cout << "\n";
}
}
}
void printWinner(int rabbitPosition, int turtlePosition)
{
if(turtlePosition >= 70 && rabbitPosition < 70)
{
cout << "TORTOISE WINS!!! YAY!!!\n";
}
else if(rabbitPosition >=70 && turtlePosition < 70)
{
cout << "Hare wins. Yuch.\n";
}
else if(rabbitPosition >=70 && turtlePosition >=70)
{
cout << "It's a tie\n";
}
}
void tie(int turtlePosition, int rabbitPosition)
{
if(rabbitPosition >=70 && turtlePosition >=70)
executeRace();
}
};
int main()
{
Race race;
race.executeRace();
return EXIT_SUCCESS;
}
*当然,除非处理诸如演算之类的高级语言!
编译器选项:
g++ -o Race Race.cc
您还需要在Race :: main函数中声明函数
class Race
{
public:
void main()
{
executeRace();
} // <----- add this
我认为您应该使用gcc -o ...
而不是gcc o- ...
其次,您不能使用C ++中的函数定义函数。
将另一个函数定义移到类void main()
:特别是,您需要将int main()
之前的倒数第二大括号移到int randomMove()
之前。
您想拉出Race中定义的main()函数中包含的各种函数(在其花括号内)。
选择它们,Ctrl-X(剪切),移到main()声明Ctrl-V(粘贴)上方。 重新格式化。 重新编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.