gpt4 book ai didi

c++ - 刚开始 C++ : Undefined Symbol error on Compile

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:35 27 4
gpt4 key购买 nike

情况是这样的:

我刚刚开始我的第一门 C++ 类(class)。我对 C++ 一无所知,尽管这是 C++ 类(class)的介绍,但老师几乎没有教授该语言的语法,只是我们已经知道的逻辑。

现在他给了我们一个程序描述,然后说:“写吧,哈哈。”我理解逻辑很好,但正如我之前所说,我对 C++ 一无所知。因此,我首先用 java 编写它(我确实知道),然后一旦我用 java 编写它,我就尝试将它编码为 C++。

但是现在编译时出现以下错误

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 文件中的代码: http://rapidshare.com/files/195742284/race.txt.html

这里是复制粘贴:

#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();
}
};

最佳答案

它提示 main 未定义,这是正确的。 C 和 C++ 需要一个名为 main独立函数,该函数返回 int。拥有一个名为main 的方法的 是不够的;编译器只关心独立的。

另一件事要记住,class 类型中成员的默认可见性是private。要么将您的类更改为使用 struct(这几乎是两者之间的唯一区别),要么指定公共(public)可见性:

class Race {
public:
void main() { ... }
};

然后你可以从你的类中调用main函数:

int main() {
Race race;
race.main();
return EXIT_SUCCESS;
}

关于c++ - 刚开始 C++ : Undefined Symbol error on Compile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com