У меня проблема с компиляцией проекта, состоящего из нескольких частей.Я думал, что включил правильные операторы #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» (сетка fish) не определена.Я предполагаю, что проблема не слишком сложна, но я не могу найти решение.
- Заранее спасибо, SegFaults McGee