Example of Circular Dependencies in C++
Implementation of circular dependencies in C/C++ can be a bit tricky, because any class or structure definition must be placed above its usage in the same file. A circular dependency between classes A and B will thus both require the definition of A to be placed above B, and the definition of B to be placed above A, which of course is impossible. A forward declaration trick is therefore needed to accomplish this.
The following example illustrates how this is done.
- File a.h:
- File b.h:
- File main.cpp:
Note that although a name (e.g. A
) can be declared multiple times, such as in forward declarations, it can only be defined once (the One Definition Rule).
Read more about this topic: Circular Dependency
Famous quotes containing the word circular:
“The night in prison was novel and interesting enough.... I found that even here there was a history and a gossip which never circulated beyond the walls of the jail. Probably this is the only house in the town where verses are composed, which are afterward printed in a circular form, but not published. I was shown quite a long list of verses which were composed by some young men who had been detected in an attempt to escape, who avenged themselves by singing them.”
—Henry David Thoreau (18171862)