title: Forward-declaring a custom type of another namespace in a header file
body: <p>I am using an external library named <em>custom</em> (not the actual name) which defines many of its data types in its own namespace. Let's assume that the namespace is named as <code>custom</code> as well.</p>
  
  <p>I am trying to make use of a datatype named <code>DataType</code>. <code>DataType</code> is a custom type defined using a typedef, and let's assume that it can be used in a .cpp file by including <code>"custom/datatype.h"</code></p>
  
  <p>My code has the following setting.</p>
  
  <p>action.h:</p>
  
  <pre><code>class Action
  {
      Action() {}
      virtual ~Action() {}
  
      virtual void foo(custom::DataType*) const = 0;
      ...
  }
  </code></pre>
  
  <p>some_action.h:</p>
  
  <pre><code>#include "action.h"
  
  class SomeAction : public Action
  {
      SomeAction() {}
  
      virtual void foo(custom::DataType*) const override;
      ...
  }
  </code></pre>
  
  <p>some_action.cpp:</p>
  
  <pre><code>#include "some_action.h"
  #include "custom/datatype.h"
  ...
  void SomeAction::foo(custom::DataType*) const
  {
      ...
  }
  </code></pre>
  
  <p>Is there any proper way to forward-declare <code>DataType</code> in <code>action.h</code> and <code>some_action.h</code> other than including <code>"custom/datatype.h"</code> in <code>action.h</code>?</p>