title: Struct forward declaration error: Typedef redefinition with different types
body: <p>I want to forward declare a struct in the header file.</p>
  
  <pre><code>struct GLFWvidmode;
  
  class DesktopVideoMode {
  private:
      const GLFWvidmode *videomode;
  public:
      DesktopVideoMode(const GLFWvidmode *videomode);
  ...
  </code></pre>
  
  <p>In the cpp file I include the external header with the definition...</p>
  
  <pre><code>#include "DesktopVideoMode.hpp"
  #include &lt;GLFW/glfw3.h&gt;
  </code></pre>
  
  <p>...where the error "<em>Typedef redefinition with different types ('struct GLFWvidmode' vs 'GLFWvidmode')</em>" happens:</p>
  
  <pre><code>typedef struct
  {
      /*! The width, in screen coordinates, of the video mode.
       */
      int width;
      /*! The height, in screen coordinates, of the video mode.
       */
      int height;
      /*! The bit depth of the red channel of the video mode.
       */
      int redBits;
      /*! The bit depth of the green channel of the video mode.
       */
      int greenBits;
      /*! The bit depth of the blue channel of the video mode.
       */
      int blueBits;
      /*! The refresh rate, in Hz, of the video mode.
       */
      int refreshRate;
  } GLFWvidmode;
  </code></pre>
  
  <p>Can't I forward declare in a case like this?</p>