title: C2236 : unexpected token 'struct', did you forget ';' ? C2332 : 'struct' missing a tag name
body: <p>Having checked posts with similar errors. None of the solutions proposed helped overcoming this issue.</p>
  <p>I have checked all my classes for ';' at the end of the definition.....all of them are properly defined.</p>
  <p>I have checked the include headers file for header guards. All of them have guards</p>
  <p>This is output of building a QT project  (desktop GUI app) .</p>
  <p>What are the typical causes of these errors aside from what's mentioned above ?</p>
  <p>below is the output  of the error :</p>
  <blockquote>
  <p>include\ConfigServer.h(85): error C2236: unexpected token 'struct'. Did you forget a ';'?</p>
  <p>include\ConfigServer.h(85): error C2332: 'struct': missing tag name</p>
  </blockquote>
  <p>This 'ConfigServer.h' file include 'BlockParam.h' , 'CommsInfo.h' and 'GeoInfo.h'  which I have compiled with previously on a separate console project to test their use. They work on a console program.</p>
  <p>Any insight ?</p>
  <pre><code>#ifndef CONFIGSERVER_H
  #define CONFIGSERVER_H
  
  #include &lt;iostream&gt;
  #include &lt;iterator&gt;
  
  #include &lt;QObject&gt;
  #include &lt;QMap&gt;
  #include &lt;QString&gt;
  #include &lt;QVector&gt;
  #include &lt;QFile&gt;
  #include &lt;QXmlStreamReader&gt;
  #include &lt;QDebug&gt;
  
  #include &quot;BlockParam.h&quot;
  #include &quot;CommsInfo.h&quot;
  #include &quot;GeoInfo.h&quot;
  
  
  
  
  #define _delete(x) { if(x) delete x; x = nullptr;}
  
  #define DEBUG 1
  #define SHOW(X,B)  { if(DEBUG) { std::cout &lt;&lt; X &lt;&lt; B &lt;&lt;std::endl ; } }
  #define DISPLAY(X) { if(DEBUG) { std::cout &lt;&lt; X &lt;&lt;std::endl ; } }
  
  
  
  
  enum ENUM_PLATFORM {
      NOTSET = 0,
      SILSIM = 1,  // Desktop Platform
      PILSIM = 2,  // PIL Platform
      HILSIM = 3   // HIL Platform
  };
  
  enum ENUM_CONFIG
  {
      GEOINFO  = 1,
      COMMS    = 2, 
      MDLPARAM = 3 
  };
  
  
  typedef QMap&lt;QString,ConfigInfo*&gt; CfgMap;
  
  
  class ConfigServer
  {
  public:
  
      ConfigServer();
      ~ConfigServer();
  
      bool LoadXmlFile(const QString xmlParmFileName);
      bool Validate(Xpci* xpc);
  
      bool IsValidated();
      bool errorsOccurred();
      QVector&lt;QString&gt; getErrorStrings();
  
      template&lt;class T&gt;
      ConfigInfo *GetConfigInfo(QString _inface,QString _pty,bool ebl);
  
      template&lt;class T&gt;
      void DisplayContent(T* Cfg) const;
  
      CfgMap *getMap()  const;
      QVector&lt;CfgMap&gt; *getConfigList()  const;
  
      ENUM_PLATFORM  PLATFORM;
      ENUM_CONFIG    CONFIGURATION;
  
      QVector&lt;QString&gt; ErrStringsVector;
  
  private:
  
      void readModelXmlToMap(QXmlStreamReader* reader,CfgMap* ConfigMap_);
  
      template&lt;class T&gt;
      bool readCurrentInterfaceElement(QXmlStreamReader* reader,CfgMap* ConfigMap_);
  
      template&lt;class T&gt;
      bool readCurrentPropertyElement(QXmlStreamReader* reader,QString interface,CfgMap* ConfigMap_);
  
      bool readCurrentDimensionElement(QXmlStreamReader* reader,unsigned &amp;rowDim,unsigned &amp;colDim);
  
      BlockParam  nullBlockParam;
      CommsInfo   nullCommsInfo;
      GeoInfo     nullGeoInfo;
  
      CfgMap*  ConfigMap = nullptr;
      QVector&lt;CfgMap&gt;  *ConfigList = nullptr;
  
      unsigned requisite;
      bool validated = false;
      bool errorFlag = false;
  
  };
  
  
  
  template&lt;&gt; bool        ConfigServer::readCurrentInterfaceElement&lt;BlockParam&gt;(QXmlStreamReader* reader,CfgMap* ConfigMap_) ;
  template&lt;&gt; bool        ConfigServer::readCurrentInterfaceElement&lt;CommsInfo&gt;(QXmlStreamReader* reader,CfgMap* ConfigMap_) ;
  template&lt;&gt; bool        ConfigServer::readCurrentInterfaceElement&lt;GeoInfo&gt;(QXmlStreamReader* reader,CfgMap* ConfigMap_) ;
  
  template&lt;&gt; bool        ConfigServer::readCurrentPropertyElement&lt;BlockParam&gt;(QXmlStreamReader *reader,QString interface,CfgMap* ConfigMap_);
  template&lt;&gt; bool        ConfigServer::readCurrentPropertyElement&lt;CommsInfo&gt;(QXmlStreamReader *reader,QString interface,CfgMap* ConfigMap_);
  template&lt;&gt; bool        ConfigServer::readCurrentPropertyElement&lt;GeoInfo&gt;(QXmlStreamReader *reader,QString interface,CfgMap* ConfigMap_);
  
  template&lt;&gt; ConfigInfo *ConfigServer::GetConfigInfo&lt;BlockParam&gt;(QString _inface,QString _pty,bool ebl);
  template&lt;&gt; ConfigInfo *ConfigServer::GetConfigInfo&lt;CommsInfo&gt;(QString _inface,QString _pty,bool ebl);
  template&lt;&gt; ConfigInfo *ConfigServer::GetConfigInfo&lt;GeoInfo&gt;(QString _inface,QString _pty,bool ebl);
  
  template&lt;&gt; void ConfigServer::DisplayContent&lt;BlockParam&gt;(BlockParam* Cfg) const;
  template&lt;&gt; void ConfigServer::DisplayContent&lt;CommsInfo&gt;(CommsInfo* Cfg) const;
  template&lt;&gt; void ConfigServer::DisplayContent&lt;GeoInfo&gt;(GeoInfo* Cfg) const;
  
  
  
  
  #endif // CONFIGSERVER_H
  </code></pre>