Почему компилятор (g ++) жалуется на эту строку кода?
XalanNode *docElement = static_cast<XalanNode*> (docBuilder_->getDocument()->getDocumentElement());
Ошибка, которую я получаю от компилятора:
ошибка: недопустимый static_cast из типа `amxalanc_1_6 :: XalanElement * 'в тип` amxalanc_1_6 :: XalanNode *'
Без static_cast компилятор печатает:
ошибка: невозможно преобразовать `amxalanc_1_6 :: XalanElement * 'в` amxalanc_1_6 :: XalanNode *' при инициализации
Класс XalanElement определяется как:
class XALAN_DOM_EXPORT XalanElement : public XalanNode
Документация также показывает, что XalanNode должен происходить от XalanElement, как вы можете видеть здесь — Ссылка на класс XalanElement.
В XalanDocument.hpp сигнатура метода getDocumentElement ():
virtual XalanElement* getDocumentElement() const = 0;
Большинство заголовков Xalan используют только предварительные объявления для классов, которые они не определяют, даже если они объявляют функции, которые принимают или возвращают указатели на эти классы. (Это обычная и хорошая практика.)
Чтобы ваш компилятор увидел тот факт, что XalanElement
происходит от XalanNode
вам нужно явно #include
заголовок, который определяет XalanElement
,
Других решений пока нет …