我正在尝试使用CodeSynthesis C ++ / Tree将xsd转换为C ++类。 在xsd中,我有一个名为time的元素如下所示:
<xs:element name="time">
<xs:complexType>
<xs:attribute name="seconds" use="required" type="xs:double"/>
... other attributes
</xs:complexType>
在转换后的C ++标题中,它被定义为:
typedef ::time time_type;
并在编译时给出了一条错误消息
'time' in namespace '::' does not name a type
但是,如果我将元素的名称更改为“times”或其他任何内容,它将编译正常。这种行为背后可能是什么原因? 非常感谢!
答案 0 :(得分:0)
这是因为::time
与std::time
相同。
答案 1 :(得分:0)
好的,现在我在文档上阅读了更多内容,它说
&#34;没有命名空间的词汇表被映射到全局范围。通过使用XML命名空间的空名称,可以使用上述选项更改此选项:&#34;
因此解决方案是在将xsd转换为C ++文件时添加以下内容
--namespace-map =cs