我正在尝试使用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”或其他任何东西,它就会编译得很好。这种行为背后的原因可能是什么?非常感谢!
发布于 2014-08-25 08:15:51
这是因为::time和std::time是一样的。
发布于 2014-09-12 00:48:52
好吧,现在我看了更多关于文档的内容,上面写着
“没有命名空间的词汇表被映射到全局范围。通过使用XML名称空间的空名称,也可以使用上面的选项来更改这一点:”
因此,解决方案是在将xsd转换为C++文件时添加以下内容
--namespace-map =cshttps://stackoverflow.com/questions/25481630
复制相似问题