1

所以我必须在课堂上为我的 C++ 项目解析一个 XML 文件,并且我正在使用 RapidXML。rapidxml_iterators.hpp 文件给我带来了一些麻烦。顺便说一句,我正在使用 Dev C++

起初,我有以下代码:

typedef typename xml_node<Ch> value_type;
typedef typename xml_node<Ch> &reference;
typedef typename xml_node<Ch> *pointer;
typedef std::ptrdiff_t difference_type;
typedef std::bidirectional_iterator_tag iterator_category;

在我的 main.cpp 中,我做了:#include "rapidxml_iterators.hpp" 并在我尝试编译它时给了我一个预期的嵌套名称说明符错误。我按照compile rapidxml under linux with g++的说明,将代码从顶部更改为以下内容:

typedef xml_node<Ch> value_type;
typedef xml_node<Ch> &reference;
typedef xml_node<Ch> *pointer;
typedef typename std::ptrdiff_t difference_type;
typedef typename std::bidirectional_iterator_tag iterator_category;

现在,它给了我这些错误:

- 没有名为ptrdiff_t' instd' 的类模板 -ISO C++ 禁止声明没有类型的 `difference_type'

如果有人对如何修复此代码有任何想法,我将永远感激不尽。提前致谢!

4

1 回答 1

0

你缺乏 的定义std::ptrdiff_t。所以编译器告诉你你不能typedef这样做,因为它没有定义。

只需在文件顶部包含正确的标题,你就会很好(只有这个错误!),也就是说,添加:

#include <cstddef>
于 2013-03-06T00:02:17.900 回答