[xsd-users] XSD C++ code generation error
    Mikhail Evstiounin 
    mikhail.evstiounin at gmail.com
       
    Thu Mar 17 19:28:57 EDT 2011
    
    
  
Hi,
XSD generated the following code:
hxx file:
namespace xml_schema
{
…
…
  typedef ::xsd::cxx::tree::type type;
…
namespace up
{
…
  class results: public ::xml_schema::type
  {
…
    static const success_type success_default_value_;
…
  };
…
}
…
}
cxx file:
namespace xml_schema
{
…
namespace up
{
…
    typedef ::xml_schema::type success_type;
…
  const results::success_type results::success_default_value_( );
…
}
…
}
It produces the following error (gcc 4.1.1):
document-envelope.cxx:2882: error: no ‘const xml_schema::type
up::results::success_default_value_()’ member function declared in class
'up::results'
document-envelope.cxx:2882: error: declaration of ‘const xml_schema::type
up::results::success_default_value_()’ outside of class is not definition
If you change it  a little bit:
namespace xml_schema
{
…
namespace up
{
…
  const results::success_type results::success_default_value_;// ( );
…
}
…
}
It compiles normally.
Since there is no default value this type of declaration (of a class static
member) is considered as a function definition. Per many C++ name resolution
discussions, rationale is made to lean to a "function definition", not a
"variable declaration" -- too many code rely on it.
Proposal -- to fix XSD in part of static member declaration not to use "()"
if default c-tor is used.
Truly yours
Mikhail Evstiounin
    
    
More information about the xsd-users
mailing list