I have a question about forward references. Do forward/circular references ever work with anything OTHER than a pointer? I'm guessing even with forward reference, you cannot use the object itself because it is not defined yet, so you can only use a pointer to it? Therefore you cannot invoke the external object's constructor or put it in the initializer list. Is there any excepton to this? On some other C++ sites someone mentioned this was being considered as a possible change in C++0x?
A class that was only forward declared can only be used as a pointer/reference, and that pointer reference cannot be dereferenced until the class is fully defined.
However this does not prevent you from having circular dependencies, as you can always work around these types of problems with good design. See the "right way" method I outline in that article.