2013-03-05 75 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