I cannot get this simple piece of code to compile without including the TestClass.cpp file explicitly in my main.cpp file. What am I doing wrong? Thanks in advance!
Here is the code:
TestClass.h
#ifndef TESTCLASS_H_ #define TESTCLASS_H_ class TestClass { public: static int foo(); }; #endif
TestClass.cpp
#include 'TestClass.h' int TestClass::foo() { return 42; }
main.cpp
#include <iostream> #include 'TestClass.h' using namespace std; int main() { cout << TestClass::foo() << endl; return 0; }
Here is the error:
g++ main.cpp -o main.app /tmp/ccCjOhpy.o: In function `main': main.cpp:(.text+0x18e): undefined reference to `TestClass::foo()' collect2: ld returned 1 exit status
Include TestClass.cpp into the commandline, so the linker can find the function definition:
Alternatively, compile each to their own object file, then tell the compiler to link them together (it will forward them to the linker)