title: Unknown override specifier + missing type specifier
body: <p>I'm using Visual Studio 2015 Update 2.
  I have two headers called Error.h and Game.h.</p>
  
  <p>Error.h:</p>
  
  <pre><code>#ifndef _Error_H
  #define _Error_H
  
  #include "Main.h"
  #include "Core.h"
  #include &lt;Log.h&gt;
  #include &lt;CWindows.h&gt;
  
  // ErrorIDs
  enum
  {
      ErrUnknownID = 0,
      blah,
      blah2,
      blah3
  };
  
  struct ErrInfo
  {
      unsigned int  eiID;
      String        strCaption; // String is another class which implemented from std::string which works fine!
      String        strText;
      bool          bFixable = false;
  };
  
  // Static errors
  extern ErrInfo WinNotSupported;
  // blah blah
  
  class Error
  {
  
  public:
      void Initialize();
      bool ShowError(ErrInfo ErrorInfo);
      BOOL FixError(unsigned int uiErrorID);
  
      // -----------------------------------------
      // --------------- Singleton ---------------
      // -----------------------------------------
  public:
      static Error&amp; Instance()
      {
          static Error instance;
          return instance;
      }
  
      static Error *InstancePtr()
      {
          return &amp;Instance();
      }
  private:
      Error()
      {
  
      }
  
  public:
      Error(Error const&amp;) = delete;
      void operator=(Error const&amp;) = delete;
  };
  
  #endif // !_Error_H
  </code></pre>
  
  <p>And Game.h:</p>
  
  <pre><code>#ifndef _Game_H
  #define _Game_H
  
  #include "Main.h"
  #include "Error.h"
  #include "Core.h"
  #include &lt;CWindows.h&gt;
  #include &lt;AFile.h&gt;
  
  struct missingfileSt
  {
      String    strFileURL;
      String    strDLFileName;
      String    strFileName;
      String    strChecksum;
      long long llSize;
      ErrInfo   errError; // Many errors here &lt;-
  };
  
  struct deletablefileSt
  {
      String  strFileName;
      ErrInfo errError; // Many errors here too
  };
  
  #define siMissingFiles   7
  #define siDeletableFiles 5
  
  class Game
  {
  public:
  
      void ValidateFiles();
      DWORD dwGamePID;
      missingfileSt   mfMissingFiles[siMissingFiles];
      deletablefileSt dfDeletableFiles[siDeletableFiles];
  
      // -----------------------------------------
      // --------------- Singleton ---------------
      // -----------------------------------------
  public:
      static Game&amp; Instance()
      {
          static Game instance;
          return instance;
      }
  
      static Game *InstancePtr()
      {
          return &amp;Instance();
      }
  private:
      Game()
      {
          dwGamePID = 0;
      }
  
  public:
      Game(Game const&amp;) = delete;
      void operator=(Game const&amp;) = delete;
  };
  
  #endif // !_Game_H
  </code></pre>
  
  <p>Now, when I compile I get many errors from Game.h and all of them are:</p>
  
  <pre><code>Error C3646 'errError': unknown override specifier
  Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int
  </code></pre>
  
  <p>I got really confused, why errors!?
  Also I must say, in header Core.h it will include Error.h again but it mustn't be problem!</p>