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:
“Whoso desireth to know what will be hereafter, let him think of what is past, for the world hath ever been in a circular revolution; whatsoever is now, was heretofore; and things past or present, are no other than such as shall be again: Redit orbis in orbem.”
—Sir Walter Raleigh (15521618)