我是不是用错了gcc ?
Am I using gcc wrong?
刚开始学习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++的资源可能是值得的。至少用一个没有尴尬错误的。
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- 首要问题的答案让值班员搞错了
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 如何正确使用 >=?(a+f()+c)>=0 错了吗?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 指针相关的UE4崩溃.我的指针哪里错了?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- Visual C++ 和 gcc 之间从 std::isblank 返回不一致.哪一个错了
- 这被认为是有效的C 11还是C 14?还是GCC/Clang弄错了
- 在 clang 中显式指定的参数无效,但在 gcc 中成功编译 — 谁错了?
- 我是不是用错了gcc ?