我在编写多部分项目时遇到问题。我以为我已经包含了正确的#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.h
和bay.h
)已预订。
#ifndef FOO
#define FOO
...
#endif
我的两个实施文件是fish.cpp
和bay.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
答案 0 :(得分:4)
不要在driver2.cpp
中包含.cpp文件。请改为包含fish.h
和bay.h
。