Поэтому я должен проанализировать XML-файл для моего проекта C ++ в классе, и я использую 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» и выдал мне ожидаемую ошибку спецификатора вложенного имени при попытке его скомпилировать. Я следовал инструкциям скомпилируйте rapidxml под linux с помощью 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
станд»
-ISO C ++ запрещает объявление «diff_type» без типа
Если у кого-то есть идеи, как исправить этот код, я был бы всегда благодарен. Заранее спасибо!
Вам не хватает определения std::ptrdiff_t
, Таким образом, компилятор говорит вам, что вы не можете typedef
это так как оно не определено.
Просто включите правильный заголовок вверху вашего файла, и все будет хорошо (только с этой ошибкой!), То есть добавьте:
#include <cstddef>
Других решений пока нет …