title: Complex circular dependency
body: <p>what is the the best practice of solving circular dependency in <code>C++</code>?</p>
  
  <p>I could use the forward declaration, but then I get the <code>pointer to incomplete class type is not allowed</code> error. Does that mean that two classes that uses each others pointer cannot be dependent?</p>
  
  <p>Also, I thought about forward declaring each class and then including every header of the solution in the <code>main.cpp</code>, so it's all in one place. Would you recommend it?</p>
  
  <p>A snippet from the whole project is below, so you can refer to it if the issue is better explained on an example I'm familiar with, but it would do just to be theoretical.
  Thanks</p>
  
  <p><img src="https://i.stack.imgur.com/ljVim.jpg" alt="Models depending on each other"></p>