So I recently decided to try switching my projects to use cpp files only, which I found a lot easier to work with on linux than those with generated header files. This approach worked okay with linux g++, but MSVC++ 2010 on windows is coughing up a hairball. Trying the following code in MSVC++ 2010,
This is why you're getting linker errors, most likely for multiply defined symbols. Put your class declarations into header files. Your class definitions into cpp source files and add them to your project in Visual Studio.
Don't forget to wrap the contents of your header files with inclusion guards.
I think you're misunderstanding what's going on here.
I get multiple link 2005 errors indicating that the linker is not properly sorting which symbols should go in which objects.
It is you that's confusing the linker by #including your cpp files. When the preprocessor runs it simply replaces the #include ... directive with the contents of the #include'd file, resulting symbols being defined multiple times.