i think you have to use what''s called a forward declaration on one of the classes. for class Bar, you have to have a line that says class Foo; then in class Foo, you can go ahead and include bar.h
a2k
------------------General Equation, this is Private Function reporting for duty, sir!a2k
bar.h includes foo.h and foo.h includes bar.h thus creating circular headache for the linker. Use forward reference that introduces the name bar to foo like so:
//foo.h
// Forward reference class bar;
// class Foo class Foo { public: Foo(); Foo(Bar* b); Bar *b; };
"bar" class type is partially defined here so the linker knows about it. Notice the bar.h was taken out in foo.h file. Include foo.h before any other headers in foo.cpp file and use pointers or references exclusively if you can to prevent this circularity. Now you can include foo.h inside bar.h file just fine in this scenario since foo.h doesn''t include "bar.h" header anymore.
Check out www.BruceEckel.com website for a free C++ book that explains this and other scenarios(singleton, etc). It''s very good book for intermediate programmers since the book is more than learning c++ syntax. If you have msvc++6 check out msdn library''s c++ language book also(could be found online at ms too at www.msdn.microsoft.com but am not sure). It goes into technicality more. I use it more than the c++ standard I bought because it is written toward users of c++ while the standard targets compiler writers I think.