[xsd-users] Re: error: cannot convert to ?int? in assignment
    Boris Kolpackov 
    boris at codesynthesis.com
       
    Mon Feb 21 08:57:20 EST 2011
    
    
  
Hi Shubhangi,
shubhgd at cs.vt.edu <shubhgd at cs.vt.edu> writes:
> <xs:simpleType name="scalartype">
>       <xs:union memberTypes="xs:int xs:double xs:string xs:boolean"/>
> </xs:simpleType>
>
> [...]
>
> However, with this piece of code, I get the following error:
> error: cannot convert ?const scalartype? to ?int? in assignment
In C++/Tree union XML Schema types are mapped to C++ classes derived
from std::string. So what you get is a lexical representation of the
value. If you want to convert it to one of the member types, you will
need to do it yourself, for example:
#include <sstream>
using namespace std;
scalartype v = ...;
int i;
istringstream is (v);
if (!is >> i)
{
  // Error: value is not an int.
}
Or, if you are using Boost, you can shorten the above code with
lexical_cast:
#include <boost/lexical_cast.hpp>
using boost::lexical_cast;
scalartype v = ...;
int i = lexical_cast<int> (v);
Boris
    
    
More information about the xsd-users
mailing list