简单的编译问题

时间:2011-04-26 04:41:37

标签: c++ compiler-errors

我在编写多部分项目时遇到问题。我以为我已经包含了正确的#ifndef/#define语句并正确包含了头文件,但显然没有。当试图编译时出现了这个错误:

[23:18]andrew final_project$:g++ driver2.cpp fish.cpp bay.cpp
ld: duplicate symbol Fish::Fish()  in /var/folders/cc/cc+as-5yHSqg0Jcr+X2+uk+++TI/-Tmp-//ccqNXrPE.o 
and /var/folders/cc/cc+as-5yHSqg0Jcr+X2+uk+++TI/-Tmp-//cc5dOIm5.o for
architecture x86_64
collect2: ld returned 1 exit status

如有必要,我可以提供更多信息,但我的两个标题文件(fish.hbay.h)已预订。

#ifndef FOO
#define FOO
...
#endif

我的两个实施文件是fish.cppbay.cpp

fish.cpp:#include "fish.h"

bay.cpp:#include "bay.h" #include "fish.h"

我的驱动程序driver2.cpp:#include "fish.cpp" #include "bay.cpp"

我认为问题在于bay.cpp包括fish.h和bay.h,但是当我不包含fish.h时,“bay”(鱼网格)是未定义的。我猜这个问题不是太难,但我似乎无法找到解决方案。

- 提前致谢,   SegFaults McGee

1 个答案:

答案 0 :(得分:4)

不要在driver2.cpp中包含.cpp文件。请改为包含fish.hbay.h