2013-03-05 100 views
1

因此,我必须在类中为我的C++项目解析XML文件,并使用RapidXML。 rapidxml_iterators.hpp文件给我一些麻烦。我使用的开发C++的方式使用RapidXML和Dev C++解析C++中的XML文件

起初,我有以下代码:

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' in STD” -ISO C++者禁用声明没有类型的'difference_type'

如果任何人有任何关于如何解决这段代码的想法,我会永远感激。提前致谢!

+0

其他错误是: 'ISO C++者禁用difference_type的无type' 和std' 命名bidirectional_iterator_tag '无类模板和错误的其余部分只是重复这两个的,但不同的东西,如实例声明'iterator_category' – user2137877 2013-03-06 18:24:11

回答

0

您缺少std::ptrdiff_t的定义。所以编译器告诉你,你不能定义它,因为它不能被定义。

就包含在你的文件的顶部适当的标题,你会好的,即添加(只有这个错误!):

#include <cstddef> 
+0

嘿感谢一个很多为您的答复!现在,我没有得到的std :: ptrdiff_t的错误了,但它仍然给了我这些问题: 'ISO C++禁止difference_type的声明没有type' 和std' 命名bidirectional_iterator_tag '无类模板 和其余的错误只是这两个 – user2137877 2013-03-06 18:13:10

+0

重复实例好酷。然后,请将此标记为答案,以便此问题已关闭,如果您有任何问题,请以新问题开启新话题。 – Mic 2013-03-06 18:21:57

+0

其实,不,它仍然给我'std :: ptrdiff_t'错误。哇 – user2137877 2013-03-06 18:23:35