【问题标题】:CodeSynthesis C++Tree 'time' in namespace '::' does not name a type命名空间“::”中的 CodeSynthesis C++Tree“时间”未命名类型
【发布时间】:2014-08-25 08:12:01
【问题描述】:

我正在尝试使用 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' 或其他任何名称,它会编译得很好。这种行为背后的原因可能是什么? 非常感谢!

【问题讨论】:

    标签: c++ xml xsd codesynthesis


    【解决方案1】:

    这是因为::timestd::time 相同。

    【讨论】:

    • 这个说法是不是有点太强了?它可以是相同的,并且显然相同的在OP的实现中,但它不一定是普遍的情况。跨度>
    • 谢谢。我怀疑同样的事情。但由于我对 CodeSynthesis 不是很熟悉,所以我不太确定如何避免这种情况。显然我不能更改给我的 xsd 以使我的代码符合它的规范。
    【解决方案2】:

    好的,现在我阅读了更多关于文档的内容,上面写着

    “没有命名空间的词汇表被映射到全局范围。这也可以通过使用 XML 命名空间的空名称来使用上述选项进行更改:”

    所以解决办法是在xsd转C++文件的时候加上以下内容

    --namespace-map =cs
    

    【讨论】:

      猜你喜欢
      • 2022-12-31
      • 2013-05-27
      • 2012-11-08
      • 1970-01-01
      • 2012-12-20
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      相关资源
      最近更新 更多