Почему я не могу использовать static_cast из одного класса Xalan в его базовый класс?

Почему компилятор (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;

0

Решение

Большинство заголовков Xalan используют только предварительные объявления для классов, которые они не определяют, даже если они объявляют функции, которые принимают или возвращают указатели на эти классы. (Это обычная и хорошая практика.)

Чтобы ваш компилятор увидел тот факт, что XalanElement происходит от XalanNode вам нужно явно #include заголовок, который определяет XalanElement,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]