Я анализирую файл XML для своего проекта C ++ в Dev C ++, и у меня есть следующий код в файле rapidxml_iterators.hpp:
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;
Это дает мне эти ошибки:
no class template named `ptrdiff_t' in `std'
ISO C++ forbids declaration of `difference_type' with no type
no class template named `bidirectional_iterator_tag' in `std'
ISO C++ forbids declaration of `iterator_category' with no type
До получения этих ошибок приведенный выше код был следующим:
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;
Который дал мне ошибки спецификатора вложенного имени как это:
expected nested-name-specifier
`xml_node<Ch>' specified as declarator-id
two or more data types in declaration of `xml_node<Ch>'
expected `;' before "value_type"
В моем основном файле, где я делаю разбор, у меня есть следующее:
#include <iostream>
#include "rapidxml.hpp"#include "rapidxml_iterators.hpp"#include "rapidxml_print.hpp"#include "rapidxml_utils.hpp"#include <iterator>
#include <istream>
#include <cstdlib>
#include <string>
#include <queue>
#include <vector>
#include <streambuf>
#include <cstddef>
Я уже искал вокруг этого сайта для похожих постов, и я следил за их
совет, но никто из них до сих пор не решил мою проблему. Это проблема с Dev C ++ или с моим кодом? Спасибо
Прежде чем делать что-либо еще, попробуйте удалить строку: —
#include "rapidxml_iterators.hpp"
Обычно в этом нет необходимости — вы можете без проблем использовать rapidxml без него, и, насколько я помню, это вызывает много боли и странных ошибок компилятора.
Других решений пока нет …