我是不是用错了gcc ?

Am I using gcc wrong?

本文关键字:gcc 错了 是不是      更新时间:2023-10-16

刚开始学习c++我就遇到了很多麻烦。似乎无论我怎么做,都会有很多错误。我已经开始编译教程中的示例代码,但即使是示例代码也无法编译。例如,代码在:http://www.cppgameprogramming.com/cgi/nav.cgi?page=arrayclasses

给了我很多批评,当我试图:

$ g++ main.cpp -o dog

它说:

> main.cpp: In function 'int main()': main.cpp:18:15: warning: deleting
> array 'Dog myDogs [5]'
> C:Usersbob-pcAppdataLocalTempccTXXCOB.o:main.cpp:(.text+0x21):
> undefined rference to 'Dog::Dog()' C:Usersbob-pcAppdataLocalTempccTXXCOB.o:main.cpp:(.text+0x59):
> undefined rference to 'Dog::setAge(int)' C:Usersbob-pcAppdataLocalTempccTXXCOB.o:main.cpp:(.text+0x88):
> undefined rference to 'Dog::getAge()' collect2: Id returned 1 exit status

这不是我第一次尝试直接复制示例代码&编译它。即使在我学习语法之后,我也有很多麻烦,但我似乎就是找不到headers &图书馆工作正常。如有任何帮助,不胜感激。

您必须在编译中包含dog.cpp:

g++ main.cpp dog.cpp -o dog

或者,您可以将dog.cpp单独编译为一个目标文件,并将其包含在最终编译中:

g++ dog.cpp -c -o dog.o
g++ main.cpp dog.o -o dog

示例代码完全错误。: -)

//main.cpp
#include <iostream>
#include "Dog.h"
using namespace std;
int main()
{
    Dog myDogs[5];
    for (int i = 0; i <= 4; i++)
        myDogs[i].setAge( i * 2);
    for (int i = 0; i <= 4; i++)
        cout << "Dog number " << i << " is " << myDogs[i].getAge() << " years old!n";
    delete [] myDogs;    <--- Don't do this!
    return 0;
}

如果您没有使用new来分配对象,则不应该使用delete。在这种情况下,狗会照顾好自己。只需删除delete !

如果不查看代码,很难确定发生了什么。确保包含了定义类dog的文件的.o。

如果数组不是用new[]创建的,不要使用delete[]。

最后,我知道你没有特别问这个问题,但是在网上找到一个更好的学习c++的资源可能是值得的。至少用一个没有尴尬错误的。