I have a project consisting of 6 files; main.cpp, functions.h, tennisplayer.h, tennisplayer.cpp, tennisteam.h & tennisteam.cpp which are roughly defined as follows:
// main.cpp #include "tennisteam.h" #include <iostream> #include <string> #include <exception> // some main() code that needs functions.h definitions // functions.h #ifndef FUNCTIONS_H #define FUNCTIONS_H #include "tennisplayer.h" #include <iostream> #include <string> #include <limits> // some constants & function definitions needed by both main.cpp & tennisteam.cpp #endif // tennisplayer.h #ifndef TENNISPLAYER_H #define TENNISPLAYER_H #include <string> #include <vector> // tennisplayer class declarations #endif // tennisplayer.cpp #include "tennisplayer.h" #include <iostream> #include <fstream> // tennisplayer class definitions // tennisteam.h #ifndef TENNISTEAM_H #define TENNISTEAM_H #include "tennisplayer.h" #include <string> #include <vector> // #endif // tennisteam.cpp #include "tennisteam.h" #include <iostream> #include <fstream> // tennisteam class definitions However, when I include functions.h into both main.cpp & tennisteam.cpp via tennisteam.h I get a linker error along the lines of:
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: /tmp/ccv30cX0.o:tennisteam.cpp:(.text+0x0): multiple definition of `function(std::string const&)'; /tmp/ccRThgpp.o:main.cpp:(.text+0x0): first defined here I'm aware this is a linker error. I've looked around for a fix but all I come across are posts instructing me to use include guards which I have done already. Is there something I'm missing here? Any help would be appreciated.
function(std::string const&)in your given example. You can try out your example here online.inline.functions.h,main.cpp,tennisteam.cpp, andtennisteam.h, plus another file? Not down to justfunctions.h,main.cppandtennisteam.cpp? The simpler your example, the easier your question is to answer, and the more likely that your question will help someone else in the cuture.