title: How to fix an "field has incomplete type" error when using a forward declaration
body: <p>This code throws the compiler error <code>error: field ‘fTarget’ has incomplete type</code> as noted in the comments.   Why is this happening?  I'm only assigning that field and not doing any operations that would need to know what is inside... or am I?   Maybe it can't figure out the copy constructor?</p>
  
  <pre><code>class FSRVertex;  //fwd
  
  class FSREdge
   {
   public:
      char fC;
      FSRVertex fTarget;   //compiler error
      FSREdge(char c, FSRVertex target) : fC(c), fTarget(target) {}  //compiler error
  };
  
  
  class FSRVertex {
  public:
      boost::unordered_map&lt;char, FSREdge&gt; fOutEdges;
      FSRVertex() : fOutEdges() {}
  };
  </code></pre>