C++ 刚开始使用C++;:编译时出现未定义的符号错误
情况如下: 我刚开始我的第一个C++课程。我对C++一无所知,尽管这是C++课的入门教材,但老师教的语言几乎没有语法,只是我们已经知道的逻辑。 现在他给我们做了一个节目描述,说:“写,LOL”我理解逻辑很好,但是正如我之前说过的,我对C++一无所知。于是我首先在java中编写(我知道),然后我用java工作,我尝试把它编码成C++。 然而,现在我在编译时遇到以下错误C++ 刚开始使用C++;:编译时出现未定义的符号错误,c++,compilation,C++,Compilation,情况如下: 我刚开始我的第一个C++课程。我对C++一无所知,尽管这是C++课的入门教材,但老师教的语言几乎没有语法,只是我们已经知道的逻辑。 现在他给我们做了一个节目描述,说:“写,LOL”我理解逻辑很好,但是正如我之前说过的,我对C++一无所知。于是我首先在java中编写(我知道),然后我用java工作,我尝试把它编码成C++。 然而,现在我在编译时遇到以下错误 uxb3% g++ -o Race race.cc Undefined first r
uxb3% g++ -o Race race.cc
Undefined first referenced
symbol in file
main /usr/local/gcc-4.1.1/bin/../lib/gcc/sparc-sun-solaris2.10/4.1.1/crt1.o
ld: fatal: Symbol referencing errors. No output written to Race
collect2: ld returned 1 exit status
有人能帮我吗
以下是我在.txt文件中的代码:
这里是复制粘贴:
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
using namespace std;
class Race
{
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();
}
};
#包括
#包括
#包括
#包括
使用名称空间std;
阶级竞赛
{
void main()
{
executeRace();
}
int随机移动()
{
srand(时间(空));
int randomInt=rand()%100+1;
返回随机数;
}
void executeRace()
{
int-rabbitPosition=1;
int turtlePosition=1;
CUT< P>抱怨<代码>主< /代码>未定义,是正确的。C和C++需要一个独立的函数,名为“代码>主< /代码>,返回 int <代码>。不存在一个类,该类用一个名为“代码>主< /COD>”的方法;编译器只关心独立的一个。
另一件需要记住的事情是类
类型中成员的默认可见性是私有的。或者将类更改为使用结构
——这是两者之间的唯一区别——或者指定公共可见性:
class Race {
public:
void main() { ... }
};
然后可以从类中调用main
函数:
int main() {
Race race;
race.main();
return EXIT_SUCCESS;
}
<> >抱怨<代码>主< /代码>未定义,是正确的。C和C++需要一个独立的函数,名为“代码>主< /代码>,返回 int <代码>。不存在一个类,该类用一个名为“代码>主< /COD>”的方法;编译器只关心独立的一个。
另一件需要记住的事情是类
类型中成员的默认可见性是私有的。或者将类更改为使用结构
——这是两者之间的唯一区别——或者指定公共可见性:
class Race {
public:
void main() { ... }
};
然后可以从类中调用main
函数:
int main() {
Race race;
race.main();
return EXIT_SUCCESS;
}
需要一个main()函数为程序提供一个起点:
int main()
{
// whatever...
// Maybe:
Race race;
race.main();
}
但是,将许多方法设置为静态方法可能是有意义的,因为它们不依赖于Race
类的任何实例成员。您需要一个main()函数为程序提供一个起点:
int main()
{
// whatever...
// Maybe:
Race race;
race.main();
}
但是,将许多方法设置为静态方法可能是有意义的,因为它们不依赖于Race
类的任何实例成员。您需要一个主函数:
// The arguments are only needed if passing arguments to your program.
// You could just use `int main()`.
int main(int argc, char** argv)
{
Race race;
race.executeRace();
}
或者是这样,没有看到您的具体错误。您需要一个主功能:
// The arguments are only needed if passing arguments to your program.
// You could just use `int main()`.
int main(int argc, char** argv)
{
Race race;
race.executeRace();
}
或者,没有看到您的具体错误。C++与Java完全不同。例如,函数不必是类的一部分。您需要将函数main()移动到类之外
class Race {
// stuff
};
int main() {
// stuff
}
C++与Java完全不同。例如,函数不必是类的一部分。您需要将函数main()移动到类之外
class Race {
// stuff
};
int main() {
// stuff
}
也许这就是你的意思
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
using namespace std;
class Race
{
public:
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);
}
private:
int randomMove()
{
srand(time(NULL));
int randomInt = rand() % 100 + 1;
return randomInt;
}
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();
}
};
void main()
{
Race race;
race.ExecuteRace();
}
#包括
#包括
#包括
#包括
使用名称空间std;
阶级竞赛
{
公众:
void ExecuteRace()
{
int-rabbitPosition=1;
int turtlePosition=1;
也许这就是你的意思
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
using namespace std;
class Race
{
public:
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);
}
private:
int randomMove()
{
srand(time(NULL));
int randomInt = rand() % 100 + 1;
return randomInt;
}
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();
}
};
void main()
{
Race race;
race.ExecuteRace();
}
#包括
#包括
#包括
#包括
使用名称空间std;
阶级竞赛
{
公众:
void ExecuteRace()
{
int-rabbitPosition=1;
int turtlePosition=1;
难道你没有主功能吗
C++与Java的最大区别在于它的main()函数具有以下特征(可选参数):
它位于全局名称空间中。这是在程序启动时调用的函数,可能是缺少符号的原因
尝试将此添加到您的程序中:
int main() {
Race r;
r.main();
return 0;
}
或者,您可以完全删除该类,因为您实际上没有使用它做任何事情。您没有主函数
C++与Java的最大区别在于它的main()函数具有以下特征(可选参数):
它位于全局名称空间中。这是在程序启动时调用的函数,可能是缺少符号的原因
尝试将此添加到您的程序中:
int main() {
Race r;
r.main();
return 0;
}
或者,您可以完全取消该类,因为您实际上并没有对它做任何操作。默认访问级别上的Nice catch。默认访问级别上的Nice catch。如果要使用静态方法,我倾向于只使用函数。可能是在命名空间中。我不会给您任何参数。如果要使用静态方法,我倾向于只使用函数。也许在名称空间中。你不会从我这里得到任何参数。函数main总是返回int,而不是void。使用它作为shibboleth的人会对你进行评判,你的程序将有未定义的行为。“使用它作为shibboleth的人”哈哈哈,很好。我只是在使用与OP相同的代码,以便他知道什么会去哪里。函数main总是返回int,而不是void。使用它作为shibboleth的人会对你进行评判,你的程序会有未定义的行为。“使用它作为shibboleth的人”哈哈哈,很好。我只是使用了和OP相同的代码,这样他就知道该怎么做了。