Refer to Lakos’s book, in C++ software design, cyclic physical dependency is undesirable. There are several reasons:
- It makes them hard to test and impossible to reuse independently.
- It makes them difficult for people to understand and maintain.
- It will increase the link-time cost.