Are Headers in C++ the Problem?
Well, unlike most languages, C++ splits code into headers and translation-units. There is a function call foo, that returns an int
Undefined references occur when you depend on a header, but not on the corresponding translation-unit(s). Using the compiler, a build-system can figure out the list of headers that your project uses.
Source: buckaroo.pm