Both a.cpp and b.cpp need access to the declaration of class A (which is what you have in base.h). I copied and pasted the contents of base.h (the declaration) at the top of a.cpp and b.cpp, and it compiled fine in Visual Studio 2012.
You do not want to put the definition of class A in both files. Classes can be declared in multiple places, but must be defined in only one.