No, it's not a case of circular dependency and my header files all have header protection.
I did find that file2 was missing #include "file1.h" and that fixed some problems.
But what I have is file1 depends on a class in file2 and file2 depends on another class in file1.
If I compile file2, it stops because some class in file1 has not been declared, and visa versa.
It's the chicken before the egg situation...maybe forward declaration might solve it, I'll go and try...
It seems like your problem is you are declaring the functions inside of the .h files...am I right? If you are, put them in the corresponding .cpp files, and it should solve your problems.